PHP-скрипт зависает при изменении и повторном запуске (вызвано APC)

Основная информация — Запуск WAMP 2.2 с PHP 5.4.3 и Apache 2.2.22 в 32-разрядной версии Windows XP Pro

Моя проблема в том, что когда я запускаю php-скрипт, он работает нормально. Теперь, если я изменю этот сценарий и повторно запущу его, страница никогда не загрузится, а сценарий будет заблокирован из-за того, что он используется другой программой. Я обнаружил, что он используется процессом httpd.exe, который, если я использую End Process (который фактически перезапускает его, а не останавливает), внезапно загрузится исходная страница и будет запущен новый скрипт. Если я поменяю его снова, он будет делать то же самое.

Если я отключу расширение PHP APC, этой проблемы не произойдет, поэтому она вызвана APC

Я попытался использовать php_apc_3114_beta_php54.dll (переименовал его в php_apc.dll), загруженный с http://dev.freshsite.pl/php-accelerators/apc.html "APC 3.1.14 beta for PHP 5.4" и apc_3113_beta_php54_vc9.dll (переименовал в php_apc.dll) там же "APC 3.1.13 beta for PHP 5,4 ВК9"


person Cains    schedule 29.05.2013    source источник


Ответы (2)


Я бы посоветовал загружать расширения PHP только с определенных сайтов. Расширения должны быть скомпилированы для вашей конкретной версии PHP и системы (проверьте для x86/x64 и потокобезопасности или непоточности). Лучшие места для загрузки правильно скомпилированных расширений для Windows:

PHP для Windows:

и блог Аниндьи:

РЕДАКТИРОВАТЬ: Как упоминалось ниже в моем комментарии, пытались ли вы использовать ОБЕ версии APC (потокобезопасную и непотокобезопасную) с исходного сайта, на который вы ссылались?

Это похоже на какую-то проблему с потоками...

person Filippos Karapetis    schedule 29.05.2013
comment
Многие люди ссылаются на downloads.php.net/pierre, говоря, что есть много версий (хотя только две есть), и если я использую php_apc-3.1.10-5.4-vc9-x86.zip оттуда, я получаю PHP Startup: Unable to load dynamic library '-----/php_apc.dll' - указанная процедура не может быть найденным. Другая версия выдает другую ошибку, я полагаю, потому что она для PHP 5.3. Сейчас я попробую те, что на других сайтах, но сайт, который я использовал, был первым, который я нашел, который дал dll, которые работали нормально. - person Cains; 30.05.2013
comment
Мне кажется, что блог Anindya предназначен для 64-битных загрузок, что ко мне не относится. При переходе на windows.php.net я нашел расширение по адресу pecl.php.net/package/APC но с очень ограниченной информацией о том, какая версия относится к какой версии PHP, 32/64 бит или ts против nts. Не могли бы вы случайно связать меня с загрузкой для моей конкретной ситуации? - person Cains; 30.05.2013
comment
Пробовали ли вы как потокобезопасную, так и непотокобезопасную (nts) версию APC из исходной ссылки на freshite.pl? - person Filippos Karapetis; 30.05.2013
comment
Непоточно-безопасная версия дает запуск PHP: невозможно загрузить динамическую библиотеку '-----/php_apc.dll' - указанный модуль не может быть найден, я уверен, что потокобезопасный, хотя он идет in без ошибок, каким-то образом не работает или не подходит для моего PHP. Функция apc_add работает с первоначальным раздражением, но apc_store, похоже, вообще не работает, блокируя файл и зависая на странице всякий раз, когда она вообще используется в PHP-скрипте. - person Cains; 30.05.2013
comment
Прочитав об Apache и двух моих процессах httpd.exe, я почти уверен, что мне нужна поточно-безопасная версия, поскольку Apache, по-видимому, обрабатывает запросы с несколькими потоками в Windows. - person Cains; 30.05.2013

Я сделал себе одолжение и сделал все это на Linux. Настройка всего моего сервера и установка APC на Ubuntu прошла быстрее и проще, чем просто попытка вставить APC в WAMP. После нескольких команд и чистой установки все заработало прекрасно, я не могу поверить, что не перешел на Linux раньше!

person Cains    schedule 30.05.2013