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(), но она хороша только для файлов в пределах нашей файловой системы, а с удаленным сервером не пройдет.
Есть вариант открывать файл на чтение и в случие ошибки констатировать факт, что файла не существует:
< ?
// файл, который мы проверяем
$url = "http://url.to/favicon.ico";
// пробуем открыть файл для чтения
if (@fopen($url, "r")) {
echo "Файл существует";
} else {
echo "Файл не найден";
}
?>
Однако такой прием занимает достаточно много времени.
Есть вариант еще лучше — использовать функцию get_headers():
Читать полностью »
рубрики: PHP, Разработка |
11
Декабрь
2008
Частенько приходится разбивать контент на сайтах постранично и выводить «менюшку» со списком номеров страниц, плюс ссылочки для перехода на предыдущую, следующую, первую и последнюю страницы.
С этим можно справиться таким кодом:
< ?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><a href="?page='.($cpage-1).'">< </a> ';
}
if ($stpage>1) echo '... ';
for ($i=$stpage;$i< =$endpage;$i++) {
if ($i==$cpage) { echo '<strong>'.$i.' '; }
else { echo '</a><a href="?page='.$i.'">'.$i.'</a> '; }
}
if ($endpage< $pagescount) echo '... ';
if ($cpage<$pagescount) {
// след.
echo '<a href="?page='.($cpage+1).'">> ';
// последняя
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 текущей даты прибавляет количество секунд в сутках:
$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 посередине дня
$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 |