婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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如何限制定時任務的進程數量的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美顶级少妇做爰| 成人永久看片免费视频天堂| 日韩av电影免费观看高清完整版 | 亚洲成人一区在线| 在线观看日产精品| 午夜精品爽啪视频| 欧美日韩一卡二卡三卡| 石原莉奈在线亚洲二区| 欧美zozo另类异族| 国产精品18久久久| 成人免费小视频| 丰满亚洲少妇av| 一区二区三区中文免费| 7777精品久久久大香线蕉| 国产综合色在线视频区| 国产精品午夜久久| 在线观看91精品国产入口| 日韩av中文字幕一区二区三区| 日韩午夜激情电影| 99久久99久久免费精品蜜臀| 天天做天天摸天天爽国产一区| 欧美成人精品高清在线播放| 99久久er热在这里只有精品66| 亚洲影院理伦片| 国产日韩在线不卡| 91精品国产综合久久蜜臀 | 国产麻豆视频一区| 亚洲乱码国产乱码精品精的特点| 制服丝袜av成人在线看| 国产999精品久久久久久| 五月天久久比比资源色| 中文字幕av免费专区久久| 欧美精品一二三| 99精品久久免费看蜜臀剧情介绍| 亚洲成人动漫在线免费观看| 国产精品不卡视频| 久久综合中文字幕| 制服丝袜亚洲精品中文字幕| 99re热这里只有精品视频| 久久黄色级2电影| 五月婷婷久久综合| 一区二区三区小说| 国产精品欧美久久久久无广告| 色综合色狠狠天天综合色| 欧美成人一区二区三区片免费| 日日骚欧美日韩| 欧美刺激脚交jootjob| 精品一区二区三区免费毛片爱| 91精品国产综合久久久久久| 国产suv精品一区二区6| 欧美一区二区视频在线观看2022| 另类小说图片综合网| 中文字幕一区二区视频| 日韩一级高清毛片| 91国产精品成人| av亚洲精华国产精华| 国产河南妇女毛片精品久久久| 日韩和的一区二区| 色成人在线视频| 色吧成人激情小说| 国产欧美一区二区在线观看| 欧美色电影在线| 爽好多水快深点欧美视频| 亚洲国产精品影院| 日韩一区和二区| 久久久久97国产精华液好用吗| 欧美人与性动xxxx| 欧美日本一区二区| 91麻豆精品国产91久久久更新时间| 欧美丝袜自拍制服另类| 欧美午夜影院一区| 欧美一个色资源| 精品av久久707| 久久青草国产手机看片福利盒子 | 欧美一区二区三区的| 日韩一区二区在线看| 欧美成人r级一区二区三区| 日韩精品资源二区在线| 2024国产精品| 国产欧美日韩中文久久| 亚洲欧美日韩在线不卡| 午夜精品久久久久久久99水蜜桃| 日韩二区三区四区| 精品夜夜嗨av一区二区三区| 国产91综合网| 99久久免费国产| 欧美日韩美女一区二区| 精品免费一区二区三区| 亚洲国产激情av| 亚洲成av人片观看| 国产中文一区二区三区| 成人h动漫精品一区二| 日韩欧美亚洲国产另类| 26uuu欧美| 亚洲精品v日韩精品| 日韩精品免费专区| 国产福利一区二区三区视频在线| 色呦呦日韩精品| 日韩一区二区视频| 中文字幕一区不卡| 天天综合网天天综合色| 国产福利一区在线| 在线播放亚洲一区| 亚洲桃色在线一区| 国产曰批免费观看久久久| 欧美色综合网站| 亚洲欧美怡红院| 免费观看30秒视频久久| 色琪琪一区二区三区亚洲区| 欧美mv日韩mv国产网站app| 一区二区三区精密机械公司| 国产成人在线视频网站| 91精品国产入口| 亚洲电影欧美电影有声小说| 99精品国产99久久久久久白柏| 日韩一级高清毛片| 有坂深雪av一区二区精品| 成人夜色视频网站在线观看| 欧美一级二级三级乱码| 亚洲国产精品天堂| 日本韩国欧美在线| 亚洲靠逼com| av在线这里只有精品| 久久久99精品免费观看| 另类小说一区二区三区| 欧美一区在线视频| 日韩二区在线观看| 欧美日韩电影在线播放| 亚洲va欧美va国产va天堂影院| 国产裸体歌舞团一区二区| 26uuu色噜噜精品一区| 粉嫩aⅴ一区二区三区四区五区| 国产精品欧美一区二区三区| 91免费观看国产| 国产乱码精品一区二区三区五月婷| 中文字幕在线视频一区| 欧美岛国在线观看| 在线观看日韩精品| 国产毛片一区二区| 蜜桃视频一区二区三区| 亚洲综合色网站| 亚洲综合丝袜美腿| 午夜精品爽啪视频| 亚洲成人精品一区| 精品国产一区二区三区av性色| 欧洲生活片亚洲生活在线观看| 成人丝袜高跟foot| 亚洲中国最大av网站| 色欧美乱欧美15图片| 伊人色综合久久天天人手人婷| 久久久久久毛片| 国产三级精品视频| 亚洲综合在线第一页| 日韩三级免费观看| 99re免费视频精品全部| 一区av在线播放| 在线成人免费观看| 久久国产精品色| 欧美国产97人人爽人人喊| 成人h精品动漫一区二区三区| ...中文天堂在线一区| 色94色欧美sute亚洲线路二| 日本亚洲免费观看| 日本一区二区不卡视频| 欧美三级视频在线观看| 国产精品一区二区你懂的| 一区二区在线看| 久久女同性恋中文字幕| 色婷婷综合久久久久中文一区二区| 首页国产丝袜综合| 国产精品麻豆欧美日韩ww| 欧美日韩高清不卡| 成人国产一区二区三区精品| 丝袜诱惑制服诱惑色一区在线观看| wwwwxxxxx欧美| 欧美午夜免费电影| 粉嫩13p一区二区三区| 亚洲伊人伊色伊影伊综合网| 国产无遮挡一区二区三区毛片日本| 一本色道久久综合亚洲精品按摩| 久久se这里有精品| 午夜欧美视频在线观看 | 欧美日本视频在线| 国产精品系列在线观看| 婷婷开心激情综合| 国产精品美女久久久久久2018| 在线视频综合导航| 成人毛片老司机大片| 美日韩一区二区| 亚洲一区二区高清| 国产精品卡一卡二卡三| 精品国产网站在线观看| 欧美午夜片在线观看| 97超碰欧美中文字幕| 国产69精品久久99不卡| 国产又粗又猛又爽又黄91精品| 婷婷夜色潮精品综合在线| 亚洲一区二区欧美| 亚洲一区中文在线| 一区二区欧美国产|