PHP检查脚本/函数是否正在运行

PHP检查脚本/函数是否正在运行,php,Php,在PHP中,有没有一种方法可以在允许函数再次运行之前检查函数是否已完成处理 我有一个功能,在页面上加载/重新加载/计时器事件检查DB项是否应根据结束日期(日期小于现在)过期,如果日期小于现在,则使用完全相同的信息复制记录,但在结束日期后增加10天。然后,脚本将原始记录状态设置为非活动状态。这需要在DB中保留项目的原始副本,并且该过程将继续进行 有时,脚本将创建同一项目的多个副本,因此脚本似乎没有足够快地将状态设置为inactive,并且当页面重新加载/访问时,脚本的另一个实例将运行,生成另一个副

在PHP中,有没有一种方法可以在允许函数再次运行之前检查函数是否已完成处理

我有一个功能,在页面上加载/重新加载/计时器事件检查DB项是否应根据结束日期(日期小于现在)过期,如果日期小于现在,则使用完全相同的信息复制记录,但在结束日期后增加10天。然后,脚本将原始记录状态设置为非活动状态。这需要在DB中保留项目的原始副本,并且该过程将继续进行

有时,脚本将创建同一项目的多个副本,因此脚本似乎没有足够快地将状态设置为inactive,并且当页面重新加载/访问时,脚本的另一个实例将运行,生成另一个副本记录

那么,有没有一种方法可以检查函数当前是否正在运行,如果有,则忽略新的调用以仅运行一个实例

非常感谢

听起来你需要一个“互斥器”。您可以自己创建共享资源,例如将一个空文件写入磁盘,然后检查它是否存在,并在完成后将其删除

不过,对于您的特定问题,更好的解决方案是设置一个cron作业来定期运行数据库维护脚本,而不是依赖于用户对页面的随机请求。这将确保它不会运行得太频繁,并减少每个请求的处理。

听起来您需要一个“互斥”。您可以自己创建共享资源,例如将一个空文件写入磁盘,然后检查它是否存在,并在完成后将其删除

不过,对于您的特定问题,更好的解决方案是设置一个cron作业来定期运行数据库维护脚本,而不是依赖于用户对页面的随机请求。这将确保它不会运行得太频繁,并减少每个请求的处理。

对于PHP:

 $Running = false;

   function functionName() {
    if (!$Running) {
        $Running= true;

        //Your logic implementation here

        $Running= false;
     }
  }
您也可以对jQuery函数和cron作业使用相同的原则。

对于PHP:

 $Running = false;

   function functionName() {
    if (!$Running) {
        $Running= true;

        //Your logic implementation here

        $Running= false;
     }
  }
您也可以对jQuery函数和cron作业使用相同的原理。

使用try-catch

function blah() {
 try {
 }
 catch(Exception $e) {
  echo 'Message: ' .$e->getMessage();
 }
}
使用试捕器

function blah() {
 try {
 }
 catch(Exception $e) {
  echo 'Message: ' .$e->getMessage();
 }
}

只需在比赛结束时设置一面旗帜function@Mr.Alien:不起作用,它们是单独的进程。只需在进程末尾设置一个标志function@Mr.Alien:不起作用,它们是分开的过程。谢谢。不幸的是,我不能只是有一个cron的工作,因为该网站是一个拍卖网站,其中的项目需要更新和过期的生活和重新上市的生活太。我将看一看互斥,但听起来像是一个很好的选择嗨,我一直试图找到一些关于如何使用互斥的例子,但找不到任何显示完整代码的例子,所以我对如何实现这一点有点困惑。你有没有任何例子来说明如何做到这一点?谢谢你。不幸的是,我不能只是有一个cron的工作,因为该网站是一个拍卖网站,其中的项目需要更新和过期的生活和重新上市的生活太。我将看一看互斥,但听起来像是一个很好的选择嗨,我一直试图找到一些关于如何使用互斥的例子,但找不到任何显示完整代码的例子,所以我对如何实现这一点有点困惑。你有没有任何例子来说明如何做到这一点?谢谢