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, другие не проверял), не всегда зависает, но если входные данные разнообразны, то рано или поздно это происходит.
Добрый день, Евгений.
Не могли бы вы прояснить несколько вопросов по теме «PHP 5.2 → PHP 5.3»?
Я работаю в веб-студии менеджером проектов, т. е. техническая сторона — не входит в мою компетенцию, а возникшая недавно ситуация, требует более глубокого понимания тех. вопросов. Сайты у нас делаются на MODx, PHP 5.2. Программиста в студии сейчас нет, справлялись универсалом веб-мастером, а недавно хостеры наши преподнесли сюрприз — без предупреждения поменяли 5.2 на 5.3. У многих клиентов перестали нормально работать сайты. Они к нам, мы их к хостерам, а те опять к нам — круг замкнулся. Каждый отстаивает свою правоту, а страдают клиенты. Мне хотелось бы узнать истину, если не затруднит, подскажите:
Простите, что так много вопросов, пересмотрела кучу сайтов, но на понятном простому смертному языке, ответа не так и не нашла. А, кстати, у дуриана, не такой уж и противный запах, как рассказывают, а вкус очень насыщенный и скорее приятный, в меру приторноватый, но зато он жутко полезный. Спасибо, что потратили время на прочтение моего сочинения. С уважением, Ольга (malykha2005@gmail.com)
Комментарий для Ольга , malykha2005@gmail.com:
Официально её поддержка прекращена ещё на версии 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 ) ничего не имеет против этой устаревшей и небезопасной версии.
На мой взгляд, ваш хостер не должен без ведома пользователей менять версию программного обеспечения и более того, обязан либо предложить альтернативу, либо предупредить заранее о безальтернативной смене ПО, чтобы клиент подыскал другого хостера.
В этой ситуации работу сайта обязан восстановить хостер.
Я бы сменил хостера. И вашим клиентам рекомендую то же.
Возможно. Эту работу невозможно оценить «на глазок», пожалуй, вам придётся нанять специалиста с почасовой оплатой. Я вам тут, увы, не помощник. Я руководитель, программирование — хобби.
Похоже, это кому как. Недавно были в Таиланде, мне от дуриана стало плохо, а многим он показался приятным.