20
Апрель
2009
В веб-разработке часть бывает, что проект (PHP в моем случае) находится не у вас на жестком диске, а на удаленном веб-сервере. Например, несколько человек работают над проектом, у каждого своя рабочая копия кода, в своей директории на веб-сервере. Многие рабработчики используют Eclipse и заинтересованы в том, чтоб работать в нем и над удаленными проектами. Я пробовал найти SFTP-плагин, но все те несколько, что я ставил - работать неудовлитворительно. Есть другой отличный способ в Linux - подмаунтить sftp директорию с помощью Fuse, а в Eclipse добавить новый проект.
Команды буду писать для Ubuntu (для Fedora то же самое, только вместо aptitude - yum
)
Ставим пакет sshfs:
$ sudo aptitude install sshfs
Добавляем пользователя в группу fuse (если ее нет после установки fuse, то создайте - sudo groupadd fuse):
$ sudo adduser yourusername fuse
Создайте директорию, в которую вы будете маунтить удаленные файлы (например /mnt/remote):
$ cd /mnt
$ sudo mkdir remote
Не забудьте сделать эту директорию доступной для вашего пользователя:
$ sudo chown yourusername /mnt/remote
Теперь вы можете подмаунтить удаленные файлы (не под root, а под своим пользователем):
$ sshfs remoteusername@remoteserver:/path/on/remote/server /mnt/remote
введите свой пароль (к удаленному серверу)
После завершения работы не забудьте размаунтить:
fusermount -u /mnt/remote
В Eclipse создайте новый PHP-проект и укажите, что его файлы находятся в /mnt/remote. Теперь вы можете работать над проектом, как над локальным.
рубрики: PHP, Разработка, Софт |
7
Январь
2009
Порой мы отображаем на сайтах контент с других ресурсов: картинки или фавиконы. Некоторе браузеры просто оставят пустое место (Firefox), другие же отобразят уродский прямоугольник, явно указывая, что чего-то не хватает (IE). Как же можно средствами PHP проверить существование файла.
Есть функция file_exists(), но она хороша только для файлов в пределах нашей файловой системы, а с удаленным сервером не пройдет.
Есть вариант открывать файл на чтение и в случие ошибки констатировать факт, что файла не существует:
PHP:
-
<?
-
// файл, который мы проверяем
-
$url = "http://url.to/favicon.ico";
-
-
// пробуем открыть файл для чтения
-
-
-
} else {
-
-
}
-
?>
Однако такой прием занимает достаточно много времени.
Есть вариант еще лучше - использовать функцию get_headers():
Читать полностью »
рубрики: PHP, Разработка |
11
Декабрь
2008
Частенько приходится разбивать контент на сайтах постранично и выводить "менюшку" со списком номеров страниц, плюс ссылочки для перехода на предыдущую, следующую, первую и последнюю страницы.
С этим можно справиться таким кодом:
PHP:
-
<?php
-
$itemscount=123; // количество элементов (статей)
-
$itemsperpage=10; // кол-во эл-в на странице
-
if (isset($_REQUEST['page']))
-
{ $cpage=$_REQUEST['page']; }
-
else { $cpage=1; }
-
// если странца не задана, то будем на 1й
-
$pagescount=
ceil($itemscount/
$itemsperpage);
//кол-во страниц
-
if ($cpage>1) {
-
// первая
-
echo '<a href="?page=1"><<</a> ';
-
// предыдущая
-
echo '<a href="?page='.
($cpage-
1).
'"><</a> ';
-
}
-
if ($stpage>
1) echo '... ';
-
for ($i=$stpage;$i<=$endpage;$i++) {
-
if ($i==
$cpage) { echo '<strong>'.
$i.
'</strong> ';
}
-
else { echo '<a href="?page='.
$i.
'">'.
$i.
'</a> ';
}
-
}
-
if ($endpage<
$pagescount) echo '... ';
-
if ($cpage<$pagescount) {
-
// след.
-
echo '<a href="?page='.
($cpage+
1).
'">></a> ';
-
// последняя
-
echo '<a href="?page='.
$pagescount.
'">>></a> ';
-
}
-
?>
Такой код хорош, если у вас страничек 5, но вот если их количество значительное, то намного приятнее будет смотреться что-что вроде:
<< < ... 10 11 12 13 14 15 16 ... > >>
Сейчас мы его "сбацаем"
Читать полностью »
рубрики: PHP, Разработка |
21
Ноябрь
2008
Писал цикл по дням в PHP. Есть переменные $f и $t, в которых начало и конец временного отрезка в SQL формате. У меня заданы начало: 2008-10-28 и конец 2008-11-10.
есть цикл, в котором к timestamp текущей даты прибавляет количество секунд в сутках:
PHP:
-
$cur=$f; // цикл по $cur. вначале в ней $f
-
preg_match("/([0-9]{4})-([0-1]{1}[0-9]{1})-([0-3]{1}[0-9]{1})/",
$cur,
$matches);
// разбиваем строку с датой
-
$curts=
mktime(0,
0,
0,
$matches[2],
$matches[3],
$matches[1]);
// получаем timestamp для начальной даты в 00:00:00
-
while ($cur<=$t) {
-
echo "cur:".
$cur.
"|t:".
$t.
" (".
$curts.
")<br />";
// выводим текущую дату в цикле и конечную, timestamp текщей даты
-
$curts+=24*60*60; // увеличиваем на сутки timestamp
-
$cur=
date("Y-m-d",
$curts);
В итоге у меня на выводе получалось два 2-х ноября. Я долго смотрел в код с круглыми глазами, не понимая как такое может быть.
Потом догадался, тчо это от того, что 2-го ноября в штатах переводили часы, то есть через 24 часа от 00:00:00 2-го ноября было не 00:00:00 3-го, а 23:00:00 все того же второго ноября.
Фикс заключается в том, тчоб взять начальный timestamp посередине дня
PHP:
-
$curts=
mktime(12,
0,
0,
$matches[2],
$matches[3],
$matches[1]);
// получаем timestamp для начальной даты в 12:00:00
Будьте бдительны, коллеги!
рубрики: PHP |
19
Июнь
2008
Недавно я решил наконец-то начать использовать систему контроля версиями и выбрал (Subversion). Он изначально был установлен на моем Linux Fedora, но вы можете и сами легко установить его на своей системе Fedora используя команду yum install subversion или найти RPM subversion.
Теперь хочу поделиться с вами небольшим мануалом по быстрой настройке, и не буду рассказывать, что же такое SVN и как он работает, будем считать, что вы знакомы в теории с ним и хотите наконец-то быстро попробовать его в работе. Объяснять буду на примере.
У меня есть PHP проект в /var/www/html/docs/haibuy. У Apache есть Virtualhost haibuy. Мой IP в локальной сети 192.168.1.7.
Читать полностью »
рубрики: PHP, Разработка |
16
Май
2008
Часто данные приходится отображать в наглядном для пользователя виде, а именно с помощью диаграм. Одним из видов диаграм является круговая, где за каждый элемент отвечает свой сектор.
Напишем функцию, которая стоит такую диаграму используя библиотеку GD для PHP. В качестве входных параметров ассоциативный массив $ar ($ar['имя']=данные;) и $title для заголовка диаграмы.
Читать полностью »
рубрики: PHP |
15
Май
2008
PHP дает нам возможность запускать команды операционной системы, используя например функцию exec(). Попробуем ее, написав простой whois сервис. Whois - это *nix комманда, которая показывает информацию о домене. Также мы можем проверить, свободен домен или нет. Удостовертесь, что ваш провайер включил exec(). Обычно эта функция запрещена ( находится в параметре disable_functions в php.ini). Также попробуйте, работает ли whois нормально на вашем сервере. Я пробовал скрипт на Apache 2, PHP 5, Linux Fedora 8 и все было ОК.
Читать полностью »
рубрики: PHP |
14
Май
2008
Вашему вниманию представляется простой скрипт проверки состояния вашего счета в SAPE. Скрипт на PHP с использованием curl. Сценарий логинится в системе и "выдирает со страницы" небольшой блок слева с информацией о доходе, расходах, балансе.
Читать полностью »
рубрики: PHP |