2013-05-05 139 views
1

我的服務器正在Plesk下運行CentOS,所以編輯我的httpd.conf來添加一個Rewritelock條目並不是一個選項,據我所知。在vhost.config中也不允許使用RewriteLock條目,所以我認爲我被卡在here之下。使用PHP的Apache RewriteLock替代方案?

作爲一個測試,我成功地使用了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()來確保所有進程都將等待,並且在這個正在運行的程序中不會有任何請求被混淆。

回答

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 
+1

vhost.conf文件中不允許Rewritelock條目。 – Inator 2013-05-06 20:38:49