亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 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如何限制定時任務的進程數量的相關信息資訊供網民參考!
  • 推薦文章
    欧美一级视频免费观看| 精品毛片视频| 精品毛片视频| 欧美a级片免费看| 欧美另类videosbestsex久久 | 日本特黄一级| 精品视频在线观看一区二区三区| 韩国三级一区| 久久成人性色生活片| 久草免费在线色站| 欧美激情伊人| 免费毛片基地| 久久精品免视看国产成人2021| 精品国产一区二区三区精东影业| 一本伊大人香蕉高清在线观看| 色综合久久久久综合体桃花网| 国产亚洲免费观看| 韩国三级视频网站| 精品国产一区二区三区久久久狼| 亚洲第一视频在线播放| 四虎久久影院| 国产一区二区精品| 可以免费看毛片的网站| 日韩在线观看网站| 亚久久伊人精品青青草原2020| 四虎久久影院| 精品视频一区二区三区免费| 精品久久久久久中文| 久久久成人网| 久久精品大片| 免费一级生活片| 精品国产一区二区三区免费 | 国产成人啪精品视频免费软件| 国产成人啪精品| 色综合久久天天综线观看| 99热视热频这里只有精品| 国产成人啪精品视频免费软件| 超级乱淫伦动漫| 青草国产在线观看| 青青久久精品国产免费看| 成人影院一区二区三区| 色综合久久天天综合观看| 亚洲女人国产香蕉久久精品| 国产网站免费| 国产视频一区二区在线观看| 免费国产在线视频| 日韩男人天堂| 青青久久精品| a级黄色毛片免费播放视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 色综合久久久久综合体桃花网| 免费一级生活片| 99久久精品国产国产毛片| 亚欧成人乱码一区二区| 亚洲第一色在线| 成人高清免费| 色综合久久天天综合| 韩国三级一区| 精品国产亚一区二区三区| 韩国三级视频网站| 亚洲女初尝黑人巨高清在线观看| 国产麻豆精品免费密入口| 亚欧乱色一区二区三区| 欧美激情一区二区三区视频高清 | a级精品九九九大片免费看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 免费国产在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲 欧美 成人日韩| 国产激情视频在线观看| 国产精品自拍一区| 日韩综合| 色综合久久天天综合| 99久久网站| 久久99中文字幕久久| 亚欧乱色一区二区三区| 黄视频网站在线观看| 国产精品1024永久免费视频| 可以免费看毛片的网站| 99色视频| 欧美爱爱动态| 欧美激情一区二区三区在线播放 | 欧美激情一区二区三区在线| 久久国产精品只做精品| 国产亚洲免费观看| 国产高清视频免费观看| 天堂网中文在线| 成人a大片在线观看| 日本伦理片网站| 精品久久久久久影院免费| 日韩综合| 成人免费网站视频ww| 国产a毛片| 欧美一区二区三区性| 精品久久久久久中文| a级毛片免费全部播放| 日本伦理片网站| 日本伦理网站| 久久99爰这里有精品国产| 91麻豆爱豆果冻天美星空| 99久久精品费精品国产一区二区| 日韩中文字幕在线观看视频| 国产美女在线观看| 香蕉视频久久| 亚飞与亚基在线观看| 欧美国产日韩一区二区三区| 国产伦精品一区三区视频| 午夜在线亚洲| 欧美爱爱动态| 国产一区精品| 国产高清视频免费观看| 日韩字幕在线| 国产原创中文字幕| 国产91精品露脸国语对白| 免费的黄视频| 国产亚洲精品aaa大片| 欧美a级v片不卡在线观看| 韩国毛片| 欧美日本国产| 青青青草影院| 精品久久久久久影院免费| 精品视频在线观看视频免费视频 | 亚洲精品久久玖玖玖玖| 九九久久国产精品| 毛片高清| 91麻豆国产| 国产伦精品一区二区三区在线观看 | 欧美另类videosbestsex视频| 国产91素人搭讪系列天堂| 久久国产一久久高清| 亚洲精品永久一区| 99久久精品国产免费| 日韩一级黄色大片| 99久久精品国产高清一区二区| 精品在线免费播放| 久久久久久久久综合影视网| 日本免费乱人伦在线观看| 久草免费在线观看| 国产成人精品影视| 国产一区精品| 美女免费精品视频在线观看| 91麻豆tv| 91麻豆tv| 青青久久国产成人免费网站| 二级片在线观看| 国产高清在线精品一区a| 国产a毛片| 日日爽天天| 成人免费观看视频| 日本免费看视频| 精品久久久久久中文字幕2017| 日本伦理片网站| 九九久久国产精品| 成人影院一区二区三区| 99久久视频| 国产成人精品综合| 国产a免费观看| 91麻豆国产福利精品| 99热精品在线| 91麻豆tv| 成人a级高清视频在线观看| 国产不卡福利| 美女免费毛片| 九九热国产视频| 91麻豆精品国产综合久久久| 毛片的网站| 欧美另类videosbestsex久久 | 国产国产人免费视频成69堂| 九九久久99| 久久精品店| 精品视频在线观看免费| 国产视频一区二区三区四区| 日韩综合| 久久久久久久免费视频| 久久精品免视看国产成人2021| 午夜精品国产自在现线拍| 97视频免费在线观看| 99久久精品国产片| 色综合久久手机在线| 午夜在线观看视频免费 成人| 午夜家庭影院| a级黄色毛片免费播放视频| 青青青草视频在线观看| 欧美大片aaaa一级毛片| 久久99青青久久99久久| 欧美一区二区三区性| 精品国产一区二区三区精东影业| 欧美一级视频免费观看| 天天做日日爱| 一 级 黄 中国色 片| 国产伦久视频免费观看视频| 日日日夜夜操| 日韩在线观看免费| 亚洲精品久久久中文字| 青青青草视频在线观看| a级毛片免费观看网站| 高清一级片| 日韩专区亚洲综合久久| 成人免费观看视频| 免费一级片在线|