Пишу, по большей части, про историю, свою жизнь и немного про программирование.

PHP 5.2.12 → PHP 5.3.1

Поставил новый «Денвер» с PHP 5.3.1 (до этого версия была 5.2.12), сразу же поймал баг — одна из программулин, которую я тихонечко пишу в свободное время стала подвисать вместе с интерпретатором при определённых условиях.

Прокрутив код в голове, я понял, что есть одно место в коде, которое вызывает у меня сомнение — блокировка (flock) файла, убрал обе блокировки, код заработал. Развернул по памяти всю объектную структура проекта, понял, что основной объект, который является точкой доступа к файлам создаётся два раза, у меня забрезжило смутное подозрение. Переделал основную точку входа в обработку файлов на синглетоны. Заработало как часы.

Я не уверен, потому что вполне могу что-то не улавливать, но в 5.3.x изменился сборщик мусора и, похоже, некоторые объекты стали жить (охохо) дольше. Блокировка файла у меня снимается в деструкторе объектной обёртки над файлом, да так, что могла вызвать теоритический dead lock, если объект не сдохнет вовремя. Что ж, завязываться на такие особенности интерпретатора неправильно, но PHP меня совершеннейше расслабляет тем, что для него в природе существует ровно один интерпретатор, да и такие серьёзные изменения в нём происходили давненько.

В общем, не ждите, что миграция при смене версии на 5.3 гарантированно произойдёт без проблем.

Добавлено 15 февраля 04:21: а ещё у меня 5.3 (под Windows) зависает при использовании функции crypt (алгоритм Blowfish, другие не проверял), не всегда зависает, но если входные данные разнообразны, то рано или поздно это происходит.

2 комментария
Ольга , malykha2005@gmail.com 2012

Добрый день, Евгений.
Не могли бы вы прояснить несколько вопросов по теме «PHP 5.2 → PHP 5.3»?
Я работаю в веб-студии менеджером проектов, т. е. техническая сторона — не входит в мою компетенцию, а возникшая недавно ситуация, требует более глубокого понимания тех. вопросов. Сайты у нас делаются на MODx, PHP 5.2. Программиста в студии сейчас нет, справлялись универсалом веб-мастером, а недавно хостеры наши преподнесли сюрприз — без предупреждения поменяли 5.2 на 5.3. У многих клиентов перестали нормально работать сайты. Они к нам, мы их к хостерам, а те опять к нам — круг замкнулся. Каждый отстаивает свою правоту, а страдают клиенты. Мне хотелось бы узнать истину, если не затруднит, подскажите:

  1. Насколько стара, плоха, небезопасна и т. п. версия 5.2? Можно ли использовать её и делать качественные сайты?
  2. Кто, по-вашему должен восстановить нормальную работу сайтов: разработчики или хостеры, в чьей это все-таки компетенции?
  3. Что лучше порекомендовать клиентам: смену хостинга или есть другое решение?
  4. Возможно ли адаптировать сайт с 5.2 на 5.3? Сколько примерно это может стоить и можете ли вы, например, помочь нам в этом?
    Простите, что так много вопросов, пересмотрела кучу сайтов, но на понятном простому смертному языке, ответа не так и не нашла. А, кстати, у дуриана, не такой уж и противный запах, как рассказывают, а вкус очень насыщенный и скорее приятный, в меру приторноватый, но зато он жутко полезный. Спасибо, что потратили время на прочтение моего сочинения. С уважением, Ольга (malykha2005@gmail.com)
Евгений Степанищев (bolknote.ru) 2012

Комментарий для Ольга , malykha2005@gmail.com:

Насколько стара, плоха, небезопасна и т. п. версия 5.2?

Официально её поддержка прекращена ещё на версии 5.2.16: http://www.php.net/archive/2010.php#id2010-12-16-1 , но авторы языка 6 августа 2011 года выпустили 5.2.17 для исправления критической уязвимости в языке.

Если посмотреть на список изменений между версиями 5.2.17 и текущей, то мы увидим более пяти сотен исправленных ошибок, более 30 из них связаны с безопасностью.

Я считаю эту версию 5.2 устаревшей и небезопасной.

Можно ли использовать её и делать качественные сайты?

Тем не менее, качественные сайты на ней делать можно. Бо́льшая часть ошибок проявляется крайне редко, подавляющее большинство не даёт пробить безопасность сайта, а ещё часть можно изолировать, если знать как. Например, мой сайт работает на версии 5.2.17 и мой хостер ( http://docker.ru ) ничего не имеет против этой устаревшей и небезопасной версии.

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

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

В этой ситуации работу сайта обязан восстановить хостер.

Что лучше порекомендовать клиентам: смену хостинга или есть другое решение?

Я бы сменил хостера. И вашим клиентам рекомендую то же.

Возможно ли адаптировать сайт с 5.2 на 5.3? Сколько примерно это может стоить и можете ли вы, например, помочь нам в этом?

Возможно. Эту работу невозможно оценить «на глазок», пожалуй, вам придётся нанять специалиста с почасовой оплатой. Я вам тут, увы, не помощник. Я руководитель, программирование — хобби.

А, кстати, у дуриана, не такой уж и противный запах, как рассказывают, а вкус очень насыщенный и скорее приятный, в меру приторноватый, но зато он жутко полезный.

Похоже, это кому как. Недавно были в Таиланде, мне от дуриана стало плохо, а многим он показался приятным.