Мой сервер работает с CentOS под Plesk, поэтому редактирование моего httpd.conf для добавления записи Rewritelock не является вариантом, как я ее понимаю. Запись RewriteLock также не разрешена в файле vhost.config, поэтому я думаю, что застрял, глядя на альтернативу, описанную здесь .
В качестве теста я успешно использую этот подход, который слегка изменен, так как мои записи находятся в моем vhost.conf. Я также добавил свою попытку заблокировать файл:
#!/usr/bin/env php <?php /* Extra lines to add to vhost.conf: RewriteEngine On RewriteMap tryme prg:/home/trainee/website/andy RewriteRule (.*\.htm) ${tryme:$1} */ set_time_limit(0); # forever program! $keyboard = fopen("php://stdin","r"); flock($keyboard, LOCK_EX); //lock the file while (1) { $line = trim(fgets($keyboard)); if (preg_match('/^(.*)\.htm$/',$line,$igot)) { print "$igot[1].html\n"; } else { print "$line\n"; } } ?>
Как обсуждалось здесь , кажется, что любой процесс будет ждать эксклюзивной блокировки, но я не уверен, как лучше всего протестировать. Для тех из вас, кто может знать, будет ли мое использование flock () гарантировать, что все процессы будут ждать, и никакие запросы не будут скремблированы в этой постоянно запущенной программе?
Нет необходимости редактировать главный httpd.conf. Plesk позволяет определять настраиваемые директивы apache в отдельном файле конфигурации:
/var/www/vhosts/domain.com/conf/vhost.conf
Затем необходимо обновить конфигурацию домена:
Для Plesk 10 и Plesk 11:
/usr/local/psa/admin/bin/httpdmng --reconfigure-domain domain.com
Для Plesk 7, 8 и 9:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=domain.com