我要做的事情有点复杂。
我有一个Python脚本,我想从PHP运行它,但在背景中。我在某个地方看到了在背景中运行Python脚本的地方,我必须使用PHP命令exec(script.py)
在不等待返回的情况下运行:到目前为止没问题。
第一个问题:
我必须使用另一个php命令停止此循环脚本,如何执行此操作?
第二个问题:
我必须实现服务器端计时器,该计时器在结束时停止脚本。
我找到了此代码:
<?php
$timer = 60*5; // seconds
$timestamp_file = 'end_timestamp.txt';
if(!file_exists($timestamp_file))
{
file_put_contents($timestamp_file, time()+$timer);
}
$end_timestamp = file_get_contents($timestamp_file);
$current_timestamp = time();
$difference = $end_timestamp - $current_timestamp;
if($difference <= 0)
{
echo 'time is up, BOOOOOOM';
// execute your function here
// reset timer by writing new timestamp into file
file_put_contents($timestamp_file, time()+$timer);
}
else
{
echo $difference.'s left...';
}
?>
从这个答案中。
那么,有一种方法可以在MySQL数据库中实现吗?(与脚本停止的集成不是问题)
实际上很简单。您可以使用内存对象缓存系统。我建议memcached
。可以从系统中的任何地方访问memcached
的内存对象。唯一的要求是支持与MEMCACHED后端服务器的连接。(php做,python做,等)
回答您的第一个问题:
创建一个称为stopme
的变量,其中 memcached
数据库中的值0
。
从您的Python脚本连接到Memcached数据库,并永久读取变量stopme
。假设python脚本在变量stopme
具有值0
。
为了从PHP停止您的脚本,请连接从PHP脚本到Memcached Server并将stopme
设置为1。
Python脚本立即接收到更新的值并退出。
回答您的第二个问题:
可以像阅读共享变量之前在答案中所解释的那样完成,但此外,我想提到您还可以使用Cronjob杀死运行的脚本。