2010-08-10 50 views
0

我有一个PHP维护脚本,用于更新和修复数据库。理论上,同时运行两个脚本应该不成问题,但我希望通过在PHP中将变量锁定在一个变量中来保证安全。当然,问题是我不能将它存储在$_SESSION变量中,因为会话仅适用于一个用户。如何在PHP中创建非文件锁定?

有没有什么办法可以将这个锁存储在变量中?如果服务器在脚本中间死亡,我宁愿不创建和删除文件。

回答

2

由于您正在使用数据库,因此您可以在脚本运行时使用lock the tables。这将确保独有的数据库访问。

0

有没有什么办法可以将这个锁存储在一个变量中?

一个变量是当前的php实例 - 所以它是一个更糟糕的解决方案,而不是将它保留在会话中。

如果服务器死在脚本中间,我宁愿不创建和删除文件。

它仍然可能是最好的地方。如果修复脚本没有完成,那么您可能想介入并手动确保数据一致 - 在操作启动并成功完成时,您还应该阻止对资源的所有其他访问。

如果在命令提示符下运行它,那么你可以搜索进程列表:

$cmd=$argv[0]; 
$pid=getmypid(); 
$find="ps -ef | grep $cmd | grep -v grep | grep -v $pid"; 
$others=`$find`; 

但这仍然带有先前尝试失败,并且数据被损坏的风险。

C.