Saturday, March 20, 2010

Windows 7 x64 + Apache 2.2 + PHP 5.2.13 + Mysql 5.1

В последнее время очень стали доставать падения апача при выполнении PHP скриптов. Другая проблема - запуск скриптов из консоли. По завершению CLI впадает в ступор на 5 секунд. Со времен версии PHP 5.1 на память приходил только модуль для mysql, который тогда еще выдавал сообщение об ошибке завершения своей нити выполнения с точно такой-же задержкой. Тогда это лечилось заменой php_mysql.dll на аналогичный файл со старой PHP 4.2. Там клиентская библиотека была статически вкомпилена в php_mysql.dll, но и поддерживала mysql версии 3.28. С пятой версии php модули mysql линкуются динамически с libmysql.dll, и что-то с этим самым libmysql.dll, идущим вместе с php, не все в порядке. Замена его на родную библиотеку от свежего сервера mysql решает проблему с 5-секундной задержкой во время завершения, но при этом любая попытка сделать mysql_connect() оканчивается падением CLI или Апача. Гонять и то и другое отладчиком нет ни времени ни желания, так что с 5-секундной задержкой придется пока смириться. А вот с падениями апача похоже покончено. По непонятной причине PHP при запуске скрипта то выбирает libmysql.dll собственного разлива, то подключает библиотеку идущую с mysql сервером, директория bin которого прописана в PATH. Родную dll пришлось переименовать и апач стал работать стабильно.