强制PHP命令行脚本单进程运行的方法

代码如下:

/**
  * 保证单进程
  *
  * @param string $processName 进程名
  * @param string $pidFile 进程文件路径
  * @return boolean 是否继续执行当前进程
  */
 function singleProcess($processName, $pidFile)
 {
  if (file_exists($pidFile) && $fp = @fopen($pidFile,"rb"))
  {
   flock($fp, LOCK_SH);
   $last_pid = fread($fp, filesize($pidFile));
   fclose($fp);

if (!empty($last_pid))
   {
    $command = exec("/bin/ps -p $last_pid -o command=");

if ($command == $processName)
    {
     return false;
    }
   }
  }

$cur_pid = posix_getpid();

if ($fp = @fopen($pidFile, "wb"))
  {
   fputs($fp, $cur_pid);
   ftruncate($fp, strlen($cur_pid));
   fclose($fp);

return true;
  }
  else
  {
   return false;
  }
 }

/**
  * 获取当前进程对应的Command
  *
  * @return string 命令及其参数
  */
 function getCurrentCommand()
 {
  $pid     = posix_getpid();
  $command = exec("/bin/ps -p $pid -o command=");

return $command;
 }

使用方法:


代码如下:

if (singleProcess(getCurrentCommand(), 'path/to/script.pid'))
{
    // code goes here
}
else
{
 exit("Sorry, this script file has already been running ...\n");
}

(0)

相关推荐

  • 随机广告显示(PHP函数)

    <?php #########随机广告显示##########  function myads(){ $dir="ads";   #设置存放记录的目录  //$dir="ads";   #设置存放记录的目录  $ads="$dir/ads.txt"; #设置广告代码文件 $log ="$dir/ads.log"; #设置ip记录文件 $ads_lines=file($ads); $lines=count($ads_lin

  • PHP运行时强制显示出错信息的代码

    复制代码 代码如下: error_reporting(E_ALL); ini_set('display_errors', '1'); ini_set('error_log', dirname(__FILE__) . '/error_log.txt'); //将出错信息输出到一个文本文件 怎样输出错误信息到一个文件,同时不让错误信息出现在网站上呢,这个对线上的项目调试很好,自己可以看错误信息,但是客户端看不到!有木有办法 可以使用 set_error_handler控制

  • 用PHP实现小型站点广告管理(修正版)

    今天做照着例子做,发现其中有很多错误的地方,为了让广大菜鸟兄弟更好的理解,我把修改后的文件给大家看看. 数据结构如下: CREATE TABLE ad ( url varchar(100) NOT NULL, banner varchar(150) NOT NULL, alt varchar(100), priority int(4) DEFAULT '1' NOT NULL, ) 增加广告的文件 ***************putad.php******************** <? i

  • 用PHP实现的随机广告显示代码

    <?php  #########随机广告显示##########   function myads(){  $dir="ads";   #设置存放记录的目录   //$dir="ads";   #设置存放记录的目录   $ads="$dir/ads.txt"; #设置广告代码文件  $log ="$dir/ads.log"; #设置ip记录文件 $ads_lines=file($ads);  $lines=count($

  • php强制运行广告的方法

    本文实例讲述了php强制运行广告的方法.分享给大家供大家参考.具体实现方法如下: 网站流量大但是访客就是不要点击,着让我们想赚钱的站长苦恼不以,但是在php中有这么一个很好的函数就是:session,思路是这样的,用session来保存每一个访问者的ip. 这样访问一次后就不调广告了,这样就全奇美了,不会乱跳广告,二又可以增加收入,代码如下: 复制代码 代码如下: <?php session_start();  $lifeTime = 24 * 3600;  session_set_cookie

  • 用PHP实现小型站点广告管理

    图片链接广告大概是最为常用的网络广告模式,但是多条广告的动态随机显示可不是那么简单的事情.PHP的文件上传函数提供了在这块468x60像素的区域(网页广告的标准尺寸)实现能够根据权值大小而随机显示广告的解决方案,从而避免了开发FTP程序或是ASP和Perl CAI中需要外挂扩展才能实现此项功能的弊端. 本例在PHP4+MySQL+Apache for Win9x/2000下调试通过,共包括两部分:用来增加新广告的程序AddNewAd.php3以及显示广告的程序ShowAd.php3,都存放在服务

  • php广告加载类用法实例

    本文实例讲述了php广告加载类的用法,非常实用.分享给大家供大家参考.具体方法如下: 该php广告加载类,支持异步与同步加载.需要使用Jquery实现. ADLoader.class.php类文件如下: <?php /** 广告加载管理类 * Date: 2013-08-04 * Author: fdipzone * Ver: 1.0 * * Func: * public load 加载广告集合 * public setConfig 广告配置 * private getAds 根据channel

  • php 随机排序广告的实现代码

    投放广告的人都很关注他的广告会放在哪个位置, 因为这可能影响点击次数, 甚至是否在第一屏显示. 就这个问题, 其实很容易解决, 只要随机显示广告即可. 代码如何实现? 在这我推荐两种随机显示广告的处理办法. 在后端处理 在后端排序好再输出页面. 将广告节点用数组存放, 对数组进行随机排序, 再输出经过排序的数组. 参考代码 (PHP) 如下: 复制代码 代码如下: // 用数组存放广告列表 $ads = array('<a href="#"><img src=&quo

  • 适用于抽奖程序、随机广告的PHP概率算法实例

    那么我们在程序里必然会设计到算法,即按照一定的概率让用户获得奖品.先来看两个概率算法函数. 算法一 复制代码 代码如下: /** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string 返回上面数组的key */function random($ps){    static $arr = array();    $key = md5(serialize($ps)); if (!isset

  • php 广告调用类代码(支持Flash调用)

    调用方式如下:其中DebugStr这个函数就是类似一个echo. 复制代码 代码如下: DebugStr('$Adv->getContentById($id); $id为广告编号, 仅调用一条,返回内容为字符串'); echo Adv::getContentById(35); DebugStr('$Adv->getContentByIdJS($id); $id为广告编号, 仅调用一条,返回内容为JS字符串'); echo Adv::getContentByIdJS(35); DebugStr(

随机推荐