Обновить
64K+

PHP *

Скриптовый язык общего назначения

78,32
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

session_write_close() может стать твоим другом

Время на прочтение1 мин
Охват и читатели14K
Однажды я столкнулся с такой проблемой: на странице сайта с помощью PHP-скрипта выдавался пользователю видео-контент (подробнее в моей статье «flash-видео на веб-страницах и PHP»).

Скрипт, «отдающий» видео, работал долго (примерно столько же, сколько длился видео-ролик: мы установили контроль скорости скачивания согласно битрейту). Так вот, если в период просмотра видео вы открывали новый таб в браузере с другой страницей этого же сайта, возникала ошибка.

Ларчик открывался довольно просто. На сайте использовалась авторизация, основанная на стандартных PHP-сессиях. Так вот, когда сессия стартуется, сессионный файл блокируется, и до тех пока сессия не закроется и файл не разблокируется, никто не может открыть файл сессии. По умолчанию сессия закрывается при окончании работы скрипта. Мы добавили непосредственно перед выдачей видео-контента строку session_write_close() — вуаля, все заработало.

Поскольку совсем недавно товарищ пожаловался на точно такую же проблему и был рад полученной подсказке — я решил поделиться этим «хинтом» с хабралюдьми.

Яндекс поиск на вашем сайте.

Время на прочтение2 мин
Охват и читатели7.7K
Приведу пример класса, который можно использовать в качестве поисковика на вашем сайте.
Для работы класс использует сервис Яндекс.XML. В свободном режиме они разрешают использовать до 1000 запросов в день. Условия использования сервиса на xml.yandex.ru

Яндекс.XML — это сервис, позволяющий делать автоматические поисковые запросы к Яндексу и публиковать его ответы у себя на сайте в собственном дизайне. Поиск от Яндекса — это быстрый доступ к сотням миллионов документов и изображений.

С помощью Яндекс.XML вы можете предлагать своим пользователям:
  • поиск по вашему сайту (в той мере, в какой этот сайт проиндексирован Яндексом);
  • поиск по сети или ее части (регион, отрасль), результаты которого могут показываться на вашем сайте и в вашем дизайне, и сервисы на его основе — Яндекс.XML открывает большие возможности для исследователей поисковых систем и преподавателей;
  • поиск изображений, опубликованных в сети.

Читать дальше →

Zend Studio for Eclipse 6.0.1.1rc1

Время на прочтение1 мин
Охват и читатели786
Предварительная версия популярной среды разработки для PHP от Zend.

Наткнулся случайно на официальном форуме, там искал возможность исправления бага зависания во время «building workspace». Пока полет нормальный, у кого есть подобная проблема, советую обновиться.

Скачать:
Linux — downloads.zend.com/studio-eclipse/6.0.2_preview/ZendStudioForEclipse-6_0_1_1RC1.tar.gz
Windows — downloads.zend.com/studio-eclipse/6.0.2_preview/ZendStudioForEclipse-6_0_1_1RC1.exe
MacOS — downloads.zend.com/studio-eclipse/6.0.2_preview/ZendStudioForEclipse-6.0.1.1RC1.dmg

Источник:
www.zend.com/forums/index.php?t=msg&th=6084&start=0&S=67245387af6142400e10f1c2ee920787

Когда критическая ошибка приносит радость…

Время на прочтение1 мин
Охват и читатели2K
Прочитав недавно на пьяную голову «Обработка ошибок и исключений в PHP», решил применить полученные знания на практике. Честно, ещё 6 часов назад не знал, куда это меня приведёт, но в итоге теперь мои скрипты при ошибка зажигают вот такой симпотный экран:


Хотите узнать, как я этого добился?

Видео с PHPConf 2008 — ~20 часов видео

Время на прочтение1 мин
Охват и читатели732

Выпущен последний релиз PHP 4 — PHP 4.4.9

Время на прочтение1 мин
Охват и читатели3.3K
Еще вчера вечером был выпущен последний релиз PHP четвертой ветки. В нем исправлены несколько серьезных уязвимостей и обновлена версия PCRE до 7.7.

На этом поддержка и обновления PHP 4 заканчиваются. Хотя уже давно широкими шагами идет по миру PHP 5, на многих хостинговых площадках все еще остается четверка (часто совместно с пятеркой).

Итак, сегодня эпоха PHP 4 официально закончена.

Абстракция БД

Время на прочтение4 мин
Охват и читатели5.2K
Когда я только начинал писать на PHP, ООП я владел, пожалуй, на уровне синтаксиса, не более. В то время мне вполне хватало функций mysql_*. Со временем, опыта становилось больше, я начинал задумываться об оптимизации. Этот топик описывает эволюцию моего кода.
Читать дальше →

smarty перестал дружить с php.net?

Время на прочтение1 мин
Охват и читатели862
Очень странно — захожу на smarty.php.net и созерцаю там вместо веб-сайта популярного шаблонизатора страницу об ошибках в php (http://bugs.php.net).
Интересно, к чему бы это?

(Официальный сайт Smarty так же доступен по адресу www.smarty.net)

PHP 5.3 alpha

Время на прочтение1 мин
Охват и читатели878
НУ что — вот мы и дождались первый альфа релиз PHP5.3!

Из нововведений:
  • Namespaces ( пока правда без документации )
    Late static binding и __callStatic
    лямбда-функции и замыкания
    добавлены некоторые экстеншны ( intl, phar, fileinfo и sqlite3 )
    Опциональная поддержка MySQLnd вместо libmysql
    отказ от поддержки Windows старше чем Windows 2000 (Windows 98, NT4 и т.д.)
    добавление нового синтаксиса: NOWDOC, ограниченный GOTO, сокращенный тернарный оператор (?:)


    P.S. обращаю внимание на авторское замечание: THIS IS A DEVELEOPMENT PREVIEW — DO NOT USE IT IN PRODUCTION!

Обработка ошибок и исключений в PHP

Время на прочтение6 мин
Охват и читатели39K
Эта «небольшая» статейка является развитием темы затронутой в этой статье.
Как известно, PHP зародился довольно давно и уже тогда возник вопрос, что делать с возникающими ошибками. Perl, который является несомненным прародителем PHP по умолчанию не имел какой-либо системы обработки ошибок. При возникновении любой ошибки сервер выбрасывал 500-ю ошибку и на этом все заканчивалось. Поэтому Warnings, Fatal Errors и Notices были настоящим прорывом в облегчении и без того нелегкого труда программиста. Однако время шло, механизмы PHP не менялись, а технологии, как известно, на месте стоять не любят.
Читать дальше →

Пишем свой XML-парсер

Время на прочтение9 мин
Охват и читатели72K

Предыстория


Решив запустить небольшой сервис на подаренном мне хостинге, оказалось, что там нету ни одного xml-парсера: ни SimpleXML, ни DOMXML, а только libxml и xml-rpc. Недолго думая, я решил написать свой. Мне требовался разбор не сложных rss-лент, поэтому хватило достаточно просто класса xml => array.[1]

Но для интересной статьи этого было явно не достаточно, поэтому сейчас мы напишем свою замену для SimpleXML. А заодно пробежимся по многим интересным возможностям PHP 5.

Постановка задачи


Доступ к элементам у нас будет осуществляться как доступ к свойствам класса, например $xml->element, а доступ к атрибутам элемента, как к массиву, те $xml->element['attr'], также реализуем проверку на существование атрибута при помощи isset() и итерацию по элементам при помощи foreach. И так, начнем.
Читать дальше →

Ближайшие события

Производительность кодирования и декодирования serialize и json — часть вторая

Время на прочтение2 мин
Охват и читатели3.5K
Первая часть моей публикации получила ряд конструктивных комментариев, которые дали толчок разобраться в проблеме более детально.

Новые графики, комментарии и выводы

Производительность кодирования и декодирования serialize и json

Время на прочтение3 мин
Охват и читатели13K
Возникла мысль сравнить два способа хранения абстрактных данных в виде строк, реализованных в PHP: старая добрая сериализация и относительно недавно поддерживающий в языке формат json.

Для сравнения небольшой скрипт генерирует массив из 1000 элементов, две трети элементов которого — строки, длинной 15 символов (напополам — только буквы и только цифры), а оставшаяся треть — массивы по 50 элементов (также — буквенные и цифровые элементы пополам).

Итог весьма неоднозначен, подробности во второй части.

Подробности под катом

Лямбда вычисления и замыкание

Время на прочтение2 мин
Охват и читатели2.2K
В конце 2007 года был предложен патч, добавляющий лямбда функций (но без замыканий) для PHP. В ходе дискуссии в списке рассылки, было решено, что без поддержки замыканий, нет необходимости добавлять их в PHP.
Тем не менее, интерес к этой теме привел к существенным изменением первоначального патча Кристиана Сайлера (Christian Seiler) и выпуску Дмитрием Стоговым (Dmitry Stogov) нового патча.

В результате мы имеем замыкание и лямбда функции в PHP (5.3)


Читать дальше →

Обязанности PHP-программистов

Время на прочтение1 мин
Охват и читатели30K
Эта тема поднималась в отдельных комментариях к постам о собеседованиях при приеме на работу PHP-программистов, но я думаю, что она достойна и отдельного обсуждения.

Если почитать объявления о приеме на работу, то кроме непосредственно PHP и MYSQL работодатели требуют множество других знаний и умений. Знание верстки, причем валидной (css, html), хорошие знания javascript, XML, часто AJAX, реже, но тоже бывает — флэш и графические редакторы, администрирование UNIX-систем.

Но объявления не всегда отражают реальность — иногда их составляют менеджеры по персоналу а на собеседовании оказывается что не все перечисленное реально уж нужно, а иногда организация уже в процессе поиска понимает, что просто не может найти специалиста, который бы одновременно был ZCE, знатоком валидной верстки и хорошим дизайнером при этом.

Какие навыки требуются от PHP-программиста в вашей организации? Конечно, вопрос адресован PHP-программистам или тем, кто работает с ними рядом. Чем кроме самого PHP занимаются PHP-программеры? Я понимаю, что в конторе из двух человек и где-нибудь в «Гугле» их обязанности могут быть очень различными, но это-то и интересно.

Защита PHP скриптов от копирования — это возможно?

Время на прочтение4 мин
Охват и читатели42K
Бывает так, что вам неохота предоставлять исходные коды проектов, которые вы разрабатывали. Для этого можно использовать программы-обфускаторы, о которых недавно шла речь.

А бывает, что вам не так хочется закрыть исходный код, как защитить скрипт от копирования. На мой взгляд, сокрытие исходного кода, в большинстве случаев, не имеет смысла без защиты от копирования.
Читать дальше →

Работа с датой. PHP5.2

Время на прочтение2 мин
Охват и читатели14K
В PHP5.2 для работы с датой/временем появились классы DateTime и DateTimeZone. Вначале на них не обратил внимание, так как привык пользоваться функциями date(), etc. Но потом решил все-таки посмотреть какие возможности реализуют новые классы.

DateTime


Конструктор класса


DateTime DateTime::__construct ([ string $time [, DateTimeZone $timezone ]] )

Конструктор принимает два параметра:
1. Строка в формате принимаемым strtotime(), по умолчанию — «now».
2. Зона для которой будем считать время.
Читать дальше →

Конвертация базы из Windows1251 в UTF8

Время на прочтение3 мин
Охват и читатели38K
Всем привет. Столкнулся с вопросом конвертации базы из CP1251 в UTF8.
Полазив по просторам Интернета не нашел готового скрита (видимо плохо искал).
Вот решил написать свой скриптп. Конвертация происходит безо всяких дампов базы. Решены проблемы с символами е = ё и т.д.

продолжение под катом
Читать дальше →