仅运行一次后台进程

时间:2016-01-12 20:25:48

标签: php exec

我有一个我想要执行的进程(使用exec()),但我只想执行一次。我尝试使用全局变量,但它没有完全解决。这就是我所拥有的:

if ($started = false) {
    $started = true;
    exec("php something.php");
}

我不希望它在我加载页面时只运行一次,但是一旦页面加载了一次并执行了该过程,它就永远不会执行。那么,我该怎么做呢?

(我不确定这是否很重要,但过程中包含time_sleep_until,因此我无法在该页面中放置内容或发送回来,我认为...... )

1 个答案:

答案 0 :(得分:1)

您可以在执行流程之后或之前编写文件。下次加载脚本时,可以检查文件是否存在。

if (! file_exists('lockfile')) {
   file_put_contents('lockfile', '1');
   exec("php something.php");
}

您也可以使用内容" 0"创建该文件。如果是" 0"你可以执行你的东西并写下#34; 1"进入文件。这样你就可以获得特权(chmod)只对那个文件。

当然你也可以在MySQL,Redis,Mongo中坚持这种状态......这只是一种恩惠的选择。