Aug 15

Собеседование - важный этап устройства на (новую и интересную) работу.

Один из способов к нему подготовиться - узнать, что обычно спрашивают. (Другой, менее популярный способ - почитать умных книжек :) ).

Если вам интересно, на какие вопросы надо знать при устройстве на работу в Yahoo!, почитайте тут. Есть очень интересные.

Jun 10

“А что, можно не как модуль ?” спросит пытливый читатель, и будет прав. PHP можно запускать вполне самостоятельно из командной строки, “скармливая” ему php скрипт как параметр:

php.exe test.php

Неудивительно, что результатом работы будет HTML который отобразится в консоли. Само название - PHP - “PHP Hypertext Preprocessor” - говорит о том, что цель существования PHP - обрабатывать скрипты, внедренные в HTML, динамически получая необходимый результат. Как быть при этом запущенным, никто не оговаривает. Поэтому, на заре человечества, PHP запускался, как и все порядочные веб-прибамбасы того времени, через интерфейс CGI. По сути, при такой организации, при каждом вызове веб-страницы веб-сервер запускал как отдельный процесс соответствующий препроцессор, отдавал ему на обработку файл, получал результат и передавал его клиенту. Все как бы неплохо, но в нынешний потребительский век, к веб-сайту люди обращаются не степенно и на Вы, спокойно ожидая своей очереди, а толпами по тысяче человек в день, причем 20-30 особо желающих будут ломится одновременно. Во время неких событий, например чемпионата мира по футболу, нагрузки на некоторые сервера может достигать миллионов обращений в день. С одной стороны - у сервера мозги луженные, работай себе и не жужжи, но нет. Запуск отдельного процесса - удовольствие не из дешевых, даже в современной ситуации копеечных цен на мегагерц и мегабайт. Добавим к расходу процессорного времени утечки памяти (это ситуация, когда память остается занятой даже после окончания работы процесса) оставленные нерадивыми программистами (вероятно они дома тоже не закрывают воду в ванной и не выключают свет в туалете) - и мы получим перерасход ресурсов сервера и необходимость перезагрузить его чтобы продолжить работу. Остановка сервера даже на 5 минут в день - катастрофа. Для серверов с коммерческой нагрузкой - это потерянные клиенты. Кому интересен сайт который недоступен ?

Таким образом, человечество вплотную подошло к важному открытю - PHP должен стать единым целым с Apache, благо последний предоставляет все средства для расширения через создание модулей. При таком варианте взаимодействия, серверу Apache не приходится порождать дополнительных процессов, кроме себя самого, что экономит ресурсы сервера, а взаимодействие между Apache и PHP происходит в одной области памяти, что ускоряет работу. Также, подключение PHP как модуль делает невозможным ряд атак на сервер.

Рассматривать установку как CGI приложения я здесь не буду, дабы не засорять ваш мозг. Перейдем к собственно установке. Есть два пути установки PHP - с помощью инсталлятора и ручной. С одной стороны, первый путь проще - так как примерно с 90% вероятности инсталлятор выполнит все процедуры за вас. С другой стороны, нам интересно разобраться как “оно работает” и установка вручную этому очень способствует. Поэтому:

  1. Скачайте последнюю версию PHP с сайта php.net. Сегодня (июнь 2007) это версия 5.2.3. Это должен быть zip архив. Не поддавайтесь искушению, и не скачивайте .msi файл - процесс установки с помощью инсталлятора слишком прост, а это ведет на Темную Сторону Силы.
  2. Разверните архив в папку С:\PHP на вашей машине. Это может быть и другая папка, но для простоты я буду считать что вы прислушались к совету. Кроме того, избегайте папок с пробелами при установке PHP - это создает ненужные сложности.
  3. Откройте на редактирование файл httpd.conf чтобы прописать PHP как модуль Apache (я считаю что вы установили сервер Apache2.2.x)
    LoadModule php5_module c:/php/php5apache2_2.dll
    
    AddType application/x-httpd-php .php
    
    PHPIniDir C:/php

    Если у вас установлен Apache 2.0.x - подключать следует библиотеку php5apache2.dll, которая располаается там-же. Если у вас версия Apache 1.3.x - используйте php5apache.dll
    Директива PHPIniDir определена внутри модуля PHP, и поэтому эта строка должна располагаться ниже чем LoadModule - иначе Apache не будет знать что от него хотят и не запустится. Эта директива описывает нахождение файла настроек PHP - php.ini. По умолчанию он расположен в корне PHP - я предполагаю у вас это C:/PHP. Заметьте также, что Apache привык видеть в путях файлов “линуховые” слеши - / (по-английски называемые forward slash), а не “виндовые” слеши - \ (back slash) которые используются для записи путей файлов в Windows. Поэтому везде в httpd.conf нужно указывать пути через forward slash: “С:/php” - хотя это не очевидно для пользователя Windows.

  4. PHP плагины любой версии используют core-библиотеку php5ts.dll и поэтому должны иметь к ней доступ. Сама библиотека лежит в папке C:\PHP, но сходу PHP ее там не найдет (очевидно, правда ? :) ) Чтобы PHP таки нашел свою основную библиотеку нужно либо скопировать ее в папку Apache (например, C:\Program Files\Apache Group\Apache2\bin) - там PHP будет искать ее в первую очередь, либо скопировать ее папку Windows, либо прописать папку C:\PHP в переменную окружения PATH. Последний вариант предпочтительней, поскольку оставляет поле для маневра если вы смените версию PHP или Apache. Чтобы изменить переменную окружения, нажмите правой клавишей на значке Мой Компьютер, выберите пункт выпадающего меню Свойства и в открывшемся окне выберите закладку Дополнительно, а на открывшейся закладе - нажмите кнопку Переменные Среды. Там найдите строку с переменной Path и нажмите кнопку Изменить.

    В открывшемся диалоговом окне добавьте через точку запятой путь C:\PHP - вот так: “;C:\PHP”. Заметьте, что тут слеш уже “обратный”, “виндовый” - поскольку эта настройка к Apache не имеет отношения, а в терминах Windows пути должны записываться именно так.
  5. Сейчас надо перезапустить службу Apache чтобы был заново прочитан httpd.conf и новые настройки возымели силу. Для этого пройдите знакомый путь Панель Управления -> Администрирование -> Службы и в открывшемся окне найдите и выберите Apache и нажмите кнопку Перезапустить.

Чтобы проверить что все прошло гладко - создайте файл phpinfo.php в папке для документов вашего Apache (например C:\Program Files\Apache Group\Apache2\htdocs), внутри этого файла пропишите всего лишь одну строку на языке PHP:

<?php
   phpinfo();
?>

и сохраните файл. После этого, в браузере обратитесь к этому файлу - http://localhost/phpinfo.php - и вы должны увидеть всю информацию о PHP, установленном на вашей машине.

May 24

Что почитать

AJAX, HTML, JavaScript, PHP, ссылки, аффтар: Скакунов Александр No Comments »
  • php.net - сайт-проматерь-пропаперь. Когда в редакторе нет встроенного хелпа по PHP, удобно лазить сюда: http://php.net/php_uname (справка по php_uname())
  • PHP.SPB.RU - хотя сайт староват и давно не обновлялся, здесь много полезных кусков кода с подробными объяснениями. До сих пор пользую модуль для измерения скорости работы PHP
  • phpclasses.org - много не всегда качественных, но уже готовых к использованию PHP-классов. Выкладывать ваши наработки или нет - дело хозяйское. Я выкладываю.
  • htmlcoder - тоже обновляется не часто, но советую перелопатить все имеющиеся здесь статьи по HTML, CSS и JavaScript.
  • dklab - сайт, на страницах которого был выложен класс JsHttpRequest, реализующий AJAX, когда самого термина AJAX ещё не придумали. Автор явно человек с головой. Рекомендую наблы.

Приятного чтения!

May 23

Как просто установить PHP

PHP, за жизнь, аффтар: Скакунов Александр 1 Comment »

В то время как одни - приверженцы ставить всё всегда с нуля и своими руками, я исповедую философию наименьшего сопротивления - если что-то просто и работает, то этой мой вариант.

Если вынырнуть из глубин абстракции, то можно установить PHP за 2 минуты.

Единожды пройдя этот путь лет 5 назад (статья не нова), я до сих пор пользуюсь данной наработкой. Конечно, со временем я добавил туда поддержку и MySQL, и сокетов, и cURL, и чего-только-не-придумаешь-ещё, но сам факт радует - можно иметь готовый к бою дистрибутив, влезающий на архаичную дискету 3.5″.

В общем, молодцы, что набили руку на установке, теперь просто возьмите и пользуйтесь :)

Долог путь к совершенству
May 22

Пример веб-приложения

HTML, JavaScript, PHP, учеба, аффтар: Скакунов Александр 5 Comments »

Итак, рассмотрим пример веб-приложения со следующей функциональностью:

  • показать список товаров
  • подредактировать конкретный товар
  • удалить товар
  • добавить товаров

Исходники (12 Кб)

Для успешной работы приложения на вашей машине надо сделать следующее:

  1. создать базу данных products (удобно через phpMyAdmin)
  2. содержимое файла schema.sql скормить этой базе, в результате чего будет создана одноименная таблица
  3. в файле server.php поправить данные (логин/пароль) для коннекта с базой

В принципе, большинство веб-приложений требуют реализации такой функциональности: вывести список элементов и редактировать их, так что эта базовая система может с минимальными доработками переделана под другую предметную область.

У кого что не получается - пишите в комменты, будем делиться опытом друг с другом.

P.S. Удобно дампить переменные (смотреть их содержимое) с помощью имеющегося в проекте класса dBug, для этого надо сделать такой вызов:

< ?
new dBug( $var );
?>