欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > PHP如何限制定時任務的進程數量

PHP如何限制定時任務的進程數量

熱門標簽:注冊400電話申請 福州人工外呼系統哪家強 百度商鋪地圖標注 衡水外呼系統平臺 常州地圖標注服務商 地圖標注平臺怎么給錢注冊 新河科技智能外呼系統怎么樣 安裝電銷外呼系統 釘釘打卡地圖標注

前言

現在的工作中,經常要寫一些腳本做一些異步的操作。

一般是大量的數據修改,或者解決部分并發問題。

為了能夠穩定的做好數據處理,一般情況下會用定時腳本的方式。

那么問題來了。

可能存在的問題

當我們處理大量數據的時候,腳本的執行時間可能很長,或者重復處理某條數據(寫錯的情況下)。

為了避免數據的重復處理、運行腳本過多導致服務器壓力過大等問題,我們需要限制腳本的運行數量。

如何做

思路一

查詢某種標識的進程數量,如果超過一定數量,則直接退出,不處理。

思路二

記錄每次的PID,可以使用 文件、redis、memcached 等來存儲。

當啟動一個新進程的時候,去查一下這個標識下面有哪些PID,是否還在運行,且與當前標識有關系。

當超過一定數量的時候,直接退出,不處理。

實踐

思路一實踐

這里通過 linux 的 ps、grep、wc 的命令來獲取指定標識的運行進程數。

?php
/**
 * 是否可以運行
 *
 * @param string $ident 標識
 * @param integer $maxNum 最大運行數量
 *
 * @return bool
 */
function canRun($ident, $maxNum)
{
  $cmd = sprintf('ps ax | grep %s | grep -v /bin/sh | grep -v grep | wc -l', $ident);
  $fp = @popen($cmd, 'r');
  $num = (int)trim(@fread($fp, 2096));
  @pclose($fp);
  return $num = $maxNum;
}

思路二實踐

這里使用 redis 存儲 pid 信息。

通過 /proc/{pid}/cmdline 文件檢測指定進程是否還在運行。

?php
/**
 * 檢查 pid 是否存活
 *
 * @param string $pid  PID
 * @param string $ident 標識
 *
 * @return bool
 */
function isSurvive($pid, $ident)
{
  // 獲取指定pid的cmdline文件
  $cmdlinePath = sprintf('/proc/%s/cmdline', $pid);
  if (!is_file($cmdlinePath)) {
   return false;
  }
  $cmdline = trim(file_get_contents($cmdlinePath));
  // 檢查標識是否在 cmdline 中
  return strpos($cmdline, $ident) !== false;
}

/**
 * 是否可以運行
 *
 * @param string $ident 標識
 * @param integer $maxNum 最大運行數量
 *
 * @return bool
 */
function canRun($ident, $maxNum)
{
  // 假設已經鏈接上
  $redisHandler = getRedis();
  // 定義一個key
  $key = sprintf('php:job:%s:pid', $ident);
  // 當前的PID
  $currentPid = getmypid();
  // 將當前的PID寫入redis
  $redis->sAdd($key, $currentPid);
  // 獲取redis中的所有pid
  $pids = $redis->sMembers($key);
  // 遍歷pid,檢查是否有效
  foreach ($pids as $index => $pid) {
    if ($currentPid == $pid) {
      continue;
    }
    // 檢查 pid 是否還在運行中
    if (isSurvive($pid, $ident)) {
      continue;
    }
    // 若不再運行,則直接刪除
    unset($pids[$index]);
    $redis->sRemove($key, $pid);
  }
  return count($pids) = $maxNum;
}


關于標識

關于標識,可能我們在運行一些定時腳本的時候,統一的部分可能就是 php 了;或者,擁有相同標識的腳本,我們要歸為幾類。

為了能夠實現這些需求,我們可以通過 php 的內置函數 cli_set_process_title 來實現自定義 COMMAND。
demo.php:

這個時候,我們運行 demo.php,然后通過 ps ax 可以看到如下結果:

PID  USER   TIME COMMAND
  1 root   0:09 php-fpm: master process (/usr/local/etc/php-fpm.conf)
  7 root   0:16 php-fpm: pool www
  8 root   0:15 php-fpm: pool www
  9 root   0:14 php-fpm: pool www
  10 root   0:00 sh
 663 root   0:00 sh
 690 root   0:00 {php} Job Demo
 691 root   0:00 ps ax

修改指定腳本的進程標題,我們就可以實現定義某些腳本的標識了。

最后

沒 BUG 的功能,也可能出現 BUG,我們需要更多的思考和設計減少這類錯誤的發生。

到此這篇關于PHP如何限制定時任務進程數量的文章就介紹到這了,更多相關PHP限制進程數量內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • php多進程中的阻塞與非阻塞操作實例分析
  • php多進程并發編程防止出現僵尸進程的方法分析
  • PHP多進程編程之僵尸進程問題的理解
  • PHP多進程之pcntl_fork的實例詳解
  • PHP基于文件鎖解決多進程同時讀寫一個文件問題示例
  • PHP守護進程的兩種常見實現方式詳解
  • php中實現進程鎖與多進程的方法
  • PHP多進程編程總結(推薦)
  • 詳解PHP調用Go服務的正確方式

標簽:鷹潭 克拉瑪依 鶴崗 唐山 白城 六安 遼陽 柳州

巨人網絡通訊聲明:本文標題《PHP如何限制定時任務的進程數量》,本文關鍵詞  PHP,如何,限制,定時,任務,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP如何限制定時任務的進程數量》相關的同類信息!
  • 本頁收集關于PHP如何限制定時任務的進程數量的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    亚洲欧洲一区二区在线播放| 亚洲在线视频免费观看| 美国欧美日韩国产在线播放| 伊人网综合视频| 欧美日韩国产bt| 亚洲一区二区三区在线看| 成人久久久精品乱码一区二区三区| xxxxx99| 久久综合999| 精品一区二区在线播放| 毛茸茸多毛bbb毛多视频| 日韩欧美久久久| 日本不卡的三区四区五区| 亚洲成人日韩在线| 日韩免费高清av| 久久国产精品99久久久久久老狼| 成人片黄网站色大片免费毛片| 欧美电影免费观看高清完整版 | 中文字幕在线观看免费高清| 日韩精品一区二区三区视频在线观看 | 欧美日本在线看| 午夜欧美电影在线观看| 日本护士做爰视频| 日韩欧美成人激情| 激情综合亚洲精品| 天堂av免费在线| 亚洲天堂福利av| 不许穿内裤随时挨c调教h苏绵| 在线不卡的av| 久草在线在线精品观看| 91制片厂在线| 一区二区三区中文字幕| 国产精品亚洲一区二区无码| 日韩视频免费观看高清完整版| 精品一区二区三区视频在线观看 | 青青青伊人色综合久久| 妺妺窝人体色WWW精品| 久久精品一区四区| 99精品久久久久久| 91麻豆精品国产91久久久资源速度 | 粉嫩嫩av羞羞动漫久久久| 色天使色偷偷av一区二区| 一区二区三区久久久| 成人小视频免费观看| 日本韩国一区二区三区| 天涯成人国产亚洲精品一区av| 国产又粗又猛又爽视频| 国产精品成人网| 91九色蝌蚪porny| 久久色中文字幕| www.日韩av| 日韩欧美中文字幕精品| 国产成人日日夜夜| 欧美日韩视频在线一区二区| 麻豆国产精品视频| 日本国产一区二区| 免费在线一区观看| 久久久久亚洲av无码专区体验| 亚洲成a人v欧美综合天堂| 摸摸摸bbb毛毛毛片| 亚洲蜜臀av乱码久久精品 | 亚洲乱码国产乱码精品精小说 | 国产chinese中国hdxxxx| 2021国产精品久久精品| aaa亚洲精品一二三区| 日韩女优电影在线观看| 成人午夜精品在线| 欧美成人精精品一区二区频| 麻豆91免费观看| 色狠狠综合天天综合综合| 美美哒免费高清在线观看视频一区二区| 亚洲AV成人无码精电影在线| 午夜精品一区二区三区三上悠亚| 国产乱子轮xxx农村| 天天爽夜夜爽夜夜爽精品视频| √天堂中文官网8在线| 丝袜美腿高跟呻吟高潮一区| 中文字幕人妻一区二| 日本亚洲电影天堂| 在线免费观看不卡av| 国产在线日韩欧美| 制服丝袜av成人在线看| www.亚洲精品| 久久久精品国产免大香伊| 美女扒开腿免费视频| 国产精品福利一区二区| 51妺嘿嘿午夜福利| 午夜精品久久久| 日本韩国欧美在线| 国产成人精品一区二区三区四区| 日韩欧美黄色影院| 无码人妻一区二区三区一| 中文字幕免费不卡在线| 色噜噜日韩精品欧美一区二区| 亚洲一区在线观看免费| 婷婷在线精品视频| 国产一区二区精品久久| 日韩一级黄色大片| 精品无码av一区二区三区| 日韩一区日韩二区| 国精产品一区一区| 免费看欧美女人艹b| 欧美精品在线一区二区三区| 91在线视频观看| 国产精品乱子久久久久| 一区二区三区久久久久| 日本午夜精品视频在线观看| 欧美日韩国产片| 亚洲国产日韩在线一区| 1区2区3区精品视频| 肉色超薄丝袜脚交69xx图片| 久久99精品久久久久久动态图| 欧美一区二区在线播放| youjizz.com日本| 亚洲主播在线观看| 欧美伊人久久久久久久久影院| 成人久久久精品乱码一区二区三区| 国产亚洲精品超碰| avhd101老司机| 精品一区二区三区不卡| 日韩女优电影在线观看| 中文字幕一区二区三区人妻不卡| 日韩和欧美一区二区| 91麻豆精品久久久久蜜臀| 好吊色视频一区二区三区| 亚洲va欧美va人人爽午夜| 欧美男男青年gay1069videost| avtt中文字幕| 亚洲国产视频网站| 欧美精品久久天天躁| 性囗交免费视频观看| 日韩黄色片在线观看| 日韩三级免费观看| 97伦伦午夜电影理伦片| 狂野欧美性猛交blacked| 日韩欧美二区三区| 精品人伦一区二区三电影| 久久99精品视频| 中文字幕高清一区| 亚洲欧美一区二区三区四区五区| 成人免费av资源| 亚洲免费高清视频在线| 欧美亚洲动漫精品| 一区二区三区四区影院| 视频在线观看91| 精品国产制服丝袜高跟| 夫妇露脸对白88av| 国产成人av电影在线观看| 日韩美女久久久| 欧美日韩国产精品成人| 超碰97在线资源站| 九九久久精品视频| 国产精品欧美极品| 欧美又粗又大又爽| v天堂中文在线| 久久99精品久久久久久国产越南| 久久精品综合网| 91精品办公室少妇高潮对白| 又黄又色的网站| 美女网站色91| 国产欧美精品一区aⅴ影院| 婷婷色中文字幕| av网站有哪些| 婷婷夜色潮精品综合在线| 欧美成人国产一区二区| 日韩在线视频网址| 免费观看污网站| 激情成人午夜视频| 亚洲日本在线a| 日韩视频国产视频| 来吧亚洲综合网| 最新日本中文字幕| 精品一区二区免费在线观看| 亚洲天天做日日做天天谢日日欢| 欧美日本在线播放| 一级黄色毛毛片| 日本泡妞xxxx免费视频软件| 久久99久久久久| 亚洲欧美一区二区视频| 日韩欧美国产系列| 免费三级在线观看| 香蕉在线观看视频| 经典三级在线一区| 亚洲精品成人a在线观看| 日韩精品中文字幕在线不卡尤物| 久久久久久视频| 中出视频在线观看| 大尺度一区二区| 日本视频一区二区三区| 国产精品免费丝袜| 欧美一区二区在线免费播放| 国产一二三四区| 久久久久久久久久久国产精品| av在线播放一区二区三区| 免费高清在线视频一区·| 亚洲人一二三区| 久久久久国产精品免费免费搜索| 在线观看亚洲一区| 亚洲欧美综合7777色婷婷| 国产婷婷在线观看|