使用PHP的Apache RewriteLock替代方案?

时间:2013-05-05 17:09:07

标签: php apache plesk flock

我的服务器在Plesk下运行CentOS所以编辑我的httpd.conf以添加Rewritelock条目不是我理解的选项。在vhost.config中也不允许使用RewriteLock条目,因此我认为我被视为已经描述的替代here

作为测试,我成功使用this方法,由于我的条目在我的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";
        }
}
?>

正如所讨论的here,似乎任何进程都会等待独占锁定,但我不确定如何最好地进行测试。对于那些可能知道的人,我将使用flock()确保所有进程都会等待,并且在这个正在运行的程序中没有任何请求会被扰乱吗?

1 个答案:

答案 0 :(得分:0)

无需编辑主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