设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP进程同步代码例子

发布时间:2022-07-27 13:20 所属栏目:121 来源:互联网
导读:
导读:这篇文章主要介绍了PHP进程同步代码实例,本文直接给出实现代码,需要的朋友可以参考下 经常遇到这样一种情况,计划任务定时后台执行某个php程序,有时候也需要手动执行,可能多个人都需要执行这个程序,如果任务持续时间非常长,就很容易造成重复执行,所以就
   这篇文章主要介绍了PHP进程同步代码实例,本文直接给出实现代码,需要的朋友可以参考下

  经常遇到这样一种情况,计划任务定时后台执行某个php程序,有时候也需要手动执行,可能多个人都需要执行这个程序,如果任务持续时间非常长,就很容易造成重复执行,所以就开发了下面的类。
 
  作用:在实际代码运行前检查与当前相同操作的进程是否正在运行,高并发运行是可靠的,运行中的进程中途异常中断不会产生任何影响。
 
  构造方法传递pid文件目录的绝对路径,需要自己保证不同进程对应不同pid文件。
 
  代码如下:
  <?php
 
  /*
  * 同一个PHP进程只运行一次,根据进程名字判断是否为排重进程,只能运行于linux,高并发条件下是并发安全的。
  */
 
  class SyncProcess {
 
  private $pidFile;
  }
  flock($f, LOCK_UN);
  fclose($f);
  return $running;
  } else {
  debug_print("pid file($pidFile) is invalid", E_USER_WARNING);
  }
  } else {
  debug_print("pid file cant't be empty", E_USER_WARNING);
  }
  } else {
  debug_print(__CLASS__ . ' can only run in Linux', E_USER_WARNING);
  return true;
  }
  }
 
  /**
  * 如果正在运行或者发生未知错误返回true,如果没有运行返回false

  代码如下:
  $sync = new SyncProcess(APP_PATH . '/data/pid'.implode('', $this->getRoute()));
  if ($sync->check()) {
  exit("process is running/n");
  }。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读