Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP的Apache重写锁替代方案?_Php_Apache_Plesk_Flock - Fatal编程技术网

使用PHP的Apache重写锁替代方案?

使用PHP的Apache重写锁替代方案?,php,apache,plesk,flock,Php,Apache,Plesk,Flock,我的服务器在Plesk下运行CentOS,因此,按照我的理解,编辑httpd.conf以添加重写锁条目不是一个选项。在vhost.config中也不允许使用RewriteLock条目,因此我想我一直在寻找前面描述的替代项 作为一个测试,我成功地使用了这种方法,由于我的条目在vhost.conf中,所以对其进行了轻微修改。我还添加了锁定文件的尝试: #!/usr/bin/env php <?php /* Extra lines to add to vhost.conf: RewriteEng

我的服务器在Plesk下运行CentOS,因此,按照我的理解,编辑httpd.conf以添加重写锁条目不是一个选项。在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";
        }
}
?>
#/usr/bin/env-php

如前所述,似乎任何进程都将等待独占锁,但我不确定如何最好地进行测试。对于您可能知道的人,我使用flock()是否可以确保所有进程都将等待,并且在这个不断运行的程序中不会有任何请求被扰乱?

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

vhost.conf文件中不允许使用重写锁条目。