我的服务器在 Plesk 下运行 CentOS,所以编辑我的 httpd.conf 以添加 Rewritelock 条目不是我理解的选项。在 vhost.config 中也不允许 RewriteLock 条目,所以我想我一直在寻找这里描述的替代方案。
作为测试,我成功地使用了这种方法,由于我的条目在我的 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() 的使用会确保所有进程都将等待并且在这个一直运行的程序中没有请求会被打乱吗?