Обновить
63.9

PHP *

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

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

Текст любой ценой: PPT

Время на прочтение3 мин
Количество просмотров5.1K
Некоторое время назад мы с вами обсуждали получение чистого текста из различных форматов данных: будь то PDF или DOC. В одном из обсуждений был высказано предположение, что при парсинге презентаций PowerPoint я заработаю геморрой или другую страшную болезнь мягкой точки. Что ж, волей судеб мне пришлось доставать текст и из этого «сладенького» формата. Скажу честно, геморрой заработать не удалось, а вот класс для парсинга презентаций вышел.
Читать дальше →

Перевод: Шаблонизаторы в PHP — подведение итогов

Время на прочтение7 мин
Количество просмотров12K
Перевод итога обсуждений поста в блоге Фабиена (Fabien Potencier) на тему PHP шаблонизаторов и Twig.
Читать дальше →

Перевод: Шаблонизаторы в PHP

Время на прочтение8 мин
Количество просмотров50K
Первод статьи, автором которой является Fabien Potencier, ведущий разработчик и идеолог Symfony. Статья поднимает обсуждение о шаблонизаторах PHP в целом и представляет Twig — быстрый и функциональный шаблонизатор.
Читать дальше →

Вышел долгожданный PHP 5.3.1 стабильный релиз

Время на прочтение1 мин
Количество просмотров3.9K
  • Добавлена директива max_file_uploads которая управляет максимальным количеством загружаемых файлов для избежания DDos (атака отказ от обслуживания) через переполнение каталога для временных файлом TMP.
  • Добавлены отсутствующие проверки для exif;
  • Исправлен режим Safe-mode в обход функции tempnam();
  • Исправлен параметр open_basedir в обход функции posix_mkfifo();

Список изменений в PHP 5.3.1

Скачать PHP 5.3.1

Это пока вся информация доступна на php.net этот топик(пост) будет обновлен, как только появится более полная информация

Наша команда разработчиков уже скачала эту версию и установила на внутриофисный сервер для тестирования.

К сожалению на этой версии PHP не работает наш регулярно используемый в разработках фреймворк CodeIgniter, так как была исключена функция для работы с регулярными выражениями (убрали ereg, оставили preg_match).

UPD: Проблема с CodeIgniter снята в CodeIgniter 1.7.2 разработчики фреймворка решили эту проблему и все теперь работает как часы.

Скачать CodeIgniter 1.7.2

Благодарность за информацию хабраюзерам: DenisO и @zzkey

В php5.3.1 проблемы с gettext под Windows (http://bugs.php.net/bug.php?id=49349) Благодарность хабраюзеру: grolse

PHP, MS SQL Server и UTF-8

Время на прочтение1 мин
Количество просмотров16K
По работе столкнулся с задачей настроить систему на работу с Microsoft SQL Server 2008. Система должна поддерживать мультиязычность, как следствие все строковые данные должна хранить в полях типа nvarchar и ntext. Проблема оказалась в том, что php_mssql.dll не умеет работать с этими полями, а для использования PDO и SQL Server Driver for PHP пришлось бы переписать очень много кода.

Решение проблемы оказалось не сложным…
Читать дальше →

Mikron. PHP ORM

Время на прочтение5 мин
Количество просмотров2.2K
Простые вещи должны быть простыми, а сложные вещи — возможными)
(Ларри Уолл)


Скачать дистрибутив можно из репозитория: bitbucket.org/sciner/mikron-php-orm
Инструкция по установке чуть ниже, либо можете взять из самого дистрибутива по пути /mikron/admin/help/install.txt


Что это такое и что позволяет:


Эти строки отлично характеризуют концепцию, заложенную в Mikron. Полгода назад я начал разработку собственной php-orm системы. На данный момент много чего реализовал, думаю, настал момент вывести продукт на суд общественности.

Mikron, позволяет проектировать и управлять одновременно несколькими сайтами. Естественно для каждого сайта выделяется отдельная папка, БД и прочее.
Читать дальше →

PHP Extension: тонкости

Время на прочтение4 мин
Количество просмотров6.4K
Публикую топик, за который получил инвайт на Хабр =)

Давно подумывал поделиться опытом разработки расширений для PHP, но все время забывал =)
Сейчас, увидев хабратопик об основах создания расширений для PHP в VS2008, решил наконец это сделать.
Поскольку основы были изложены в этом топике, я сразу перейду к более тонким моментам.

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

PHP модуль — это всё ещё просто. Часть вторая

Время на прочтение7 мин
Количество просмотров6.3K
Пока nerezus сочиняет статью о встраивании PHP, я постараюсь продолжить его рассказ о написании расширений. Рассказано будет далеко не всё, поскольку я считаю, что сложность наращивать надо постепенно, иначе материал будет трудноусвояемым и совсем не питательным. В связи с этим я всё-таки не расскажу в этот раз, как подменить операторы в классе, кто захочет, может почитать исходники модуля Operator от Сары Големон — основного автора какой бы то ни было информации о разработке расширений PHP.
Поскольку разработку я веду исключительно в линуксе, то писать мы будем без всяких хитрых аддонов к Visual Studio, ручками, с нуля :) А что, лучше сразу разобраться, а потом уже упрощать свой труд.
Поехали?

Почти настоящая многопоточность средствами php 5

Время на прочтение5 мин
Количество просмотров32K
В очередной раз читал про многопоточность в php точнее полное её отсутствие и всевозможные костыли в виде не блокируемых сокетов. Вот как раз там наткнулся на интересную статью в которой описывался очень простой и эффективный способ распараллеливания потоков. На основе этого материала написал небольшой класс что бы облегчить себе работу в будущем.
Читать дальше →

PHP модуль — это просто

Время на прочтение3 мин
Количество просмотров20K
Недавно мы опубликовали визард для VisualStudio, с помощью которого можно создать экстеншн в пару кликов мыши. Теперь с помощью него мы напишем наши два первых расширения: «Привет, мир» и «вытащим иконку из exe».
Сразу прошу прощение, что очень сильно задержал статью, но жизненные обстоятельства вынудили это сделать, но они исключительно уважительные.



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

Вот он какой, Doctrine 2.0 (Приурочено к релизу Doctrine 2.0 Alpha 3)

Время на прочтение3 мин
Количество просмотров2.1K
image
Поздравляю, коллеги! 3 дня назад увидела свет треться альфа-версия самого мощного на сегодняшний день ORM-фреймворка для PHP: Doctrine.

И эта новость по большему счету заслуживает внимания потому что в Doctrine 2.0 произошли очень существенные изменения в сравнении с предыдущими версиями. Сразу замечу, что вкусности эти потребуют от нас ни много ни мало — поддержку php 5.3.
Читать дальше →

Инструменты для визуализации логов профайлера xdebug

Время на прочтение2 мин
Количество просмотров23K
Наверное многие php разработчики используют профайлер xdebug для поиска узких мест в приложениях. Но просто смотреть логи очень не удобно, поэтому были созданы инструменты для их визуализации. Об этих инструментах я и хочу коротко рассказать.

Webgrind

Webgrind это набор php скриптов, которые можно установить на локальный или удаленный веб сервер. Дальше все просто до неприличия — закачиваем файл лога и смотрим статистику.
image
Самый очевидный плюс Webgrind'а это кроссплатформенность и простота установки.
Показывает список функций которые вызывались, количество вызовов (Invocation Count), общеё время потраченное на вызов (Total Self Cost) и общее время потраченное на выполнение (Total Inclusive Cost).
Можно скрыть php функции. Можно перейти внутрь функции, чтобы увидеть развернутую статистику.
Читать дальше →

Object-oriented PHP

Время на прочтение5 мин
Количество просмотров1.6K
Здравствуйте. Хочу презентовать хабрасообществу альфа-версию новой open-source библиотеки на PHP для работы с примитивами(string, integer, float и array) как с объектами.

Под катом — короткое описание, ссылка на гуглокод, описание целей и планов.
Читать дальше →

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

История одного бага или почему следует знать не только РНР

Время на прочтение3 мин
Количество просмотров2.5K
Все началось с того, что стал падать мемкеш, вернее мемкешДб. И падал он как-то хитро. Переустановка мемкеш+мемкешДб+BerkeleyDb ничего не дала. После некоторых эмперических вычислений стало понятно, что падает на методе MultiGet, при том очень интересен тот факт, что падение зависит от порядка задания ключей и кол-во ключей должно быть более 3х.
Читать дальше →

Работаем с Google Protocol Buffer в РНР

Время на прочтение9 мин
Количество просмотров14K
pb4php_logoВ проекте, который я сейчас разрабатываю, возникла необходимость смены протокола, который используется для обмена данными между частями приложения. Сейчас, на уровне внутренних сервисов, обмен происходит через передачу сериализированных массивов РНР поверх TCP сокетов. Так как по обе стороны находятся приложения на РНР, проблем не возникает, формат пакета данных также стандартный, поэтому особых сложностей нет. Разве что часто меня не удовлетворяет скорость обработки, а также то, что мы сильно завязаны на язык и платформу. Если придется стыковать с другой системой или же переписать что-либо, будут сложности — ведь сериализированный формат поймет лишь родной язык, а писать парсер мне не очень хочется. Первоначальный выбор был более чем оправданным — скорость разработки и отладки были приоритетными, сейчас есть немного времени и желания посмотреть на архитектуру с высока и другим взглядом.

Следует сказать, что данные передаются самые простые — строки (различной длины, на практике длинее килобайта или десятка почти нет, обычно это сотни байт), целые числа (в том числе и unix timestamp), некоторый набор констант, true/false флаги, только в одном случае передаются значения с плавающей точкой. В принципе, все сводится к трем типам данных — строка, целое число, число с плавающей точкой. Если хотеть, можно выделить еще поле кода команды, которое можно отнести к перечисляемому виду (количество команд ограничено и конечно, хоть и растет с ростом системы). В сериализированном виде такой пакет занимает достаточно много места, и хоть передаются данные по сокетах в пределах локальной машины, это все равно не выход — изначально система такая, что должна допускать динамическое расширение на несколько узлов кластера.

Узнать, что далее...

JetBrains WebIDE — публичная сборка #701 / немного о ZendCon'09 / кое что о неочевидных возможностях

Время на прочтение3 мин
Количество просмотров1.6K
И снова «идеальное IDE для PHP» от JetBrains ^) За прошедшее с предыдущей сборки время мы успели обзавестись официальным сайтом, посетить ZendCon'09 и наконец заняться обещанной оптимизацией производительности. Нашлось время и на несколько новых фич. Пока качается билд загляните под кат — кроме обычных подробностей там будет пара слов о ZendCon и о уникальных функциях платформы/WI.



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

Lagger — обработка ошибок и отладка в PHP с закрытыми глазами

Время на прочтение6 мин
Количество просмотров2.3K
image

Впервые этот инструмент был представлен широкой публике в 2008 году на конференции Highload.ru, после чего был основательно оптимизирован и доработан. О том, что же это за зверь такой и как им удобно пользоваться
читаем далее

Aptana 2.0 Released

Время на прочтение1 мин
Количество просмотров1.6K
Удивительно, как это еще никто не сообщил о релизе Aptana. Не знаю кому-как, но лично это последнее IDE, за которое я сел, перепопробовав Zend, Eclipse, NetBeans, ну и само собой отдельные причуды такие как PHP Editor и прочих, и… остался 100% довольным. IDE полностью удовлетворила мои потребности при кодировании.

И вот выход версии 2.0, с чем их (и нас) и поздравляю… :)

Релиз-лист здесь — aptana.org/tools/studio/releasenotes
Качать здесь — aptana.org/studio/download

RAR: создание store-архива

Время на прочтение2 мин
Количество просмотров6.3K
На днях я рассказывал, как получить список файлов, что содержит rar-архив без использования сторонних расширений или библиотек. В одном из комментариев промелькнула мысль, что в принципе, не смотря на закрытость алгоритма RAR, можно вручную создать архив без сжатия. Посидев один вечер над кодом, я представляю вашему вниманию класс для создания stored-RAR архивов.
Читать дальше →

PHP: Реализация формальных грамматик

Время на прочтение7 мин
Количество просмотров2.1K
Недавно мне нужно было написать парсер для строки поиска, который приводит строки вида
(aa&bb)^(!cc^!(dd^ee)) в строку вида куска SQL: (?f LIKE "%aa%" AND ?f LIKE "%bb%") OR (?f NOT LIKE "%cc%" OR !((?f LIKE "%dd%" OR ?f LIKE "%ee%")) ). Я написал like и SQL для упращения, на самом деле там был SPHINX, да и не оптребовалось оно в конце концов, но разговор о том как я этого добился написав формальные грамматики и реализовав их на PHP.
Читать дальше →