校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > PHP如何限制定時(shí)任務(wù)的進(jìn)程數(shù)量

PHP如何限制定時(shí)任務(wù)的進(jìn)程數(shù)量

熱門(mén)標(biāo)簽:注冊(cè)400電話申請(qǐng) 福州人工外呼系統(tǒng)哪家強(qiáng) 百度商鋪地圖標(biāo)注 衡水外呼系統(tǒng)平臺(tái) 常州地圖標(biāo)注服務(wù)商 地圖標(biāo)注平臺(tái)怎么給錢(qián)注冊(cè) 新河科技智能外呼系統(tǒng)怎么樣 安裝電銷(xiāo)外呼系統(tǒng) 釘釘打卡地圖標(biāo)注

前言

現(xiàn)在的工作中,經(jīng)常要寫(xiě)一些腳本做一些異步的操作。

一般是大量的數(shù)據(jù)修改,或者解決部分并發(fā)問(wèn)題。

為了能夠穩(wěn)定的做好數(shù)據(jù)處理,一般情況下會(huì)用定時(shí)腳本的方式。

那么問(wèn)題來(lái)了。

可能存在的問(wèn)題

當(dāng)我們處理大量數(shù)據(jù)的時(shí)候,腳本的執(zhí)行時(shí)間可能很長(zhǎng),或者重復(fù)處理某條數(shù)據(jù)(寫(xiě)錯(cuò)的情況下)。

為了避免數(shù)據(jù)的重復(fù)處理、運(yùn)行腳本過(guò)多導(dǎo)致服務(wù)器壓力過(guò)大等問(wèn)題,我們需要限制腳本的運(yùn)行數(shù)量。

如何做

思路一

查詢某種標(biāo)識(shí)的進(jìn)程數(shù)量,如果超過(guò)一定數(shù)量,則直接退出,不處理。

思路二

記錄每次的PID,可以使用 文件、redis、memcached 等來(lái)存儲(chǔ)。

當(dāng)啟動(dòng)一個(gè)新進(jìn)程的時(shí)候,去查一下這個(gè)標(biāo)識(shí)下面有哪些PID,是否還在運(yùn)行,且與當(dāng)前標(biāo)識(shí)有關(guān)系。

當(dāng)超過(guò)一定數(shù)量的時(shí)候,直接退出,不處理。

實(shí)踐

思路一實(shí)踐

這里通過(guò) linux 的 ps、grep、wc 的命令來(lái)獲取指定標(biāo)識(shí)的運(yùn)行進(jìn)程數(shù)。

?php
/**
 * 是否可以運(yùn)行
 *
 * @param string $ident 標(biāo)識(shí)
 * @param integer $maxNum 最大運(yùn)行數(shù)量
 *
 * @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;
}

思路二實(shí)踐

這里使用 redis 存儲(chǔ) pid 信息。

通過(guò) /proc/{pid}/cmdline 文件檢測(cè)指定進(jìn)程是否還在運(yùn)行。

?php
/**
 * 檢查 pid 是否存活
 *
 * @param string $pid  PID
 * @param string $ident 標(biāo)識(shí)
 *
 * @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));
  // 檢查標(biāo)識(shí)是否在 cmdline 中
  return strpos($cmdline, $ident) !== false;
}

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


關(guān)于標(biāo)識(shí)

關(guān)于標(biāo)識(shí),可能我們?cè)谶\(yùn)行一些定時(shí)腳本的時(shí)候,統(tǒng)一的部分可能就是 php 了;或者,擁有相同標(biāo)識(shí)的腳本,我們要?dú)w為幾類(lèi)。

為了能夠?qū)崿F(xiàn)這些需求,我們可以通過(guò) php 的內(nèi)置函數(shù) cli_set_process_title 來(lái)實(shí)現(xiàn)自定義 COMMAND。
demo.php:

這個(gè)時(shí)候,我們運(yùn)行 demo.php,然后通過(guò) ps ax 可以看到如下結(jié)果:

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

修改指定腳本的進(jìn)程標(biāo)題,我們就可以實(shí)現(xiàn)定義某些腳本的標(biāo)識(shí)了。

最后

沒(méi) BUG 的功能,也可能出現(xiàn) BUG,我們需要更多的思考和設(shè)計(jì)減少這類(lèi)錯(cuò)誤的發(fā)生。

到此這篇關(guān)于PHP如何限制定時(shí)任務(wù)進(jìn)程數(shù)量的文章就介紹到這了,更多相關(guān)PHP限制進(jìn)程數(shù)量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

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

標(biāo)簽:鷹潭 克拉瑪依 鶴崗 唐山 白城 六安 遼陽(yáng) 柳州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP如何限制定時(shí)任務(wù)的進(jìn)程數(shù)量》,本文關(guān)鍵詞  PHP,如何,限制,定時(shí),任務(wù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP如何限制定時(shí)任務(wù)的進(jìn)程數(shù)量》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于PHP如何限制定時(shí)任務(wù)的進(jìn)程數(shù)量的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久新电视剧免费观看| 色噜噜狠狠一区二区三区果冻| 777xxx欧美| 丝袜美腿成人在线| 日韩欧美亚洲另类制服综合在线| 日韩高清不卡一区二区三区| 日韩一二三区不卡| 国产成人免费视频网站| 中文字幕一区三区| 在线观看亚洲成人| 青娱乐精品视频| 久久久久国产精品麻豆ai换脸 | 日韩一级视频免费观看在线| 男人的天堂久久精品| 久久精品视频网| 色综合欧美在线视频区| 婷婷亚洲久悠悠色悠在线播放| 884aa四虎影成人精品一区| 国产精品一品二品| 亚洲精品亚洲人成人网在线播放| 538prom精品视频线放| 国产在线播放一区二区三区| 亚洲色图在线播放| 欧美成人女星排名| 成人动漫视频在线| 性做久久久久久免费观看欧美| 欧美www视频| 91视频在线观看免费| 日本美女视频一区二区| 国产精品久久久久久户外露出| 欧美在线|欧美| 国产精品乡下勾搭老头1| 亚洲免费在线播放| 精品成人免费观看| 色8久久精品久久久久久蜜| 韩日精品视频一区| 亚洲最色的网站| 亚洲国产精品激情在线观看| 91麻豆精品国产91久久久 | 性做久久久久久| 欧美国产激情一区二区三区蜜月| 在线免费观看视频一区| 国产一区二区电影| 三级欧美韩日大片在线看| 中文字幕一区二区5566日韩| 欧美成人免费网站| 欧美日韩一区二区在线观看| jlzzjlzz亚洲日本少妇| 精品一区二区三区免费视频| 亚洲第一主播视频| 亚洲色图欧美在线| 国产视频一区不卡| 欧美变态tickle挠乳网站| 欧美色图12p| 91老师片黄在线观看| 精品一区二区在线免费观看| 午夜精品福利一区二区三区av| 国产精品传媒在线| 中文av字幕一区| 久久久久久毛片| 久久亚洲捆绑美女| 日韩女优视频免费观看| 制服丝袜亚洲色图| 欧美三级视频在线| 欧美无乱码久久久免费午夜一区| av一区二区三区四区| 国产91在线看| 国产乱人伦精品一区二区在线观看| 免费人成精品欧美精品| 亚洲成人激情社区| 亚洲一本大道在线| 亚洲一区在线观看免费观看电影高清| 国产精品国产三级国产普通话蜜臀| 2021中文字幕一区亚洲| 久久综合九色综合97婷婷女人| 日韩午夜小视频| 91精品国产91久久综合桃花| 欧美日本不卡视频| 欧美一区二区精品在线| 日韩视频免费观看高清完整版在线观看| 欧美中文字幕一区二区三区亚洲 | 99久久99久久久精品齐齐| 高清视频一区二区| 成人中文字幕合集| 99久久精品一区| 99精品视频中文字幕| 91论坛在线播放| 在线影院国内精品| 欧美日韩免费电影| 91精品国产乱码| 91精品国产入口| 亚洲精品一区二区精华| 久久久亚洲国产美女国产盗摄| 久久网站热最新地址| 欧美激情中文不卡| 亚洲欧美另类小说| 性做久久久久久久久| 久久国产夜色精品鲁鲁99| 国产乱妇无码大片在线观看| av资源网一区| 日韩欧美中文字幕一区| 精品免费国产一区二区三区四区| 久久综合精品国产一区二区三区| 亚洲国产成人一区二区三区| 亚洲三级在线播放| 日韩中文字幕不卡| 国产乱码精品一区二区三区五月婷| 国产91对白在线观看九色| 91看片淫黄大片一级在线观看| 欧美在线视频全部完| 日韩一二三区不卡| 国产精品精品国产色婷婷| 亚洲成人av在线电影| 精品一区二区三区香蕉蜜桃 | 在线成人免费视频| 久久久不卡影院| 一区二区三区国产精品| 麻豆成人av在线| 91麻豆精品秘密| 日韩久久久久久| 亚洲欧美电影院| 韩国欧美国产1区| 91黄色激情网站| 精品国产伦一区二区三区观看方式 | 国产精品美女久久久久久久久| 亚洲一区在线观看免费观看电影高清| 极品少妇xxxx精品少妇| 91啪亚洲精品| 日韩一区二区中文字幕| 亚洲视频网在线直播| 精品写真视频在线观看| 93久久精品日日躁夜夜躁欧美| 日韩免费一区二区三区在线播放| 一区精品在线播放| 激情综合色播激情啊| 欧美日韩在线免费视频| 国产精品午夜电影| 国产一区欧美二区| 日韩三级视频中文字幕| 亚洲精品一卡二卡| 成人av电影在线观看| 亚洲精品一区二区三区四区高清 | 91色在线porny| 久久久亚洲精品一区二区三区| 丝袜诱惑制服诱惑色一区在线观看 | 欧美精品一区在线观看| 日韩国产欧美三级| 欧美日韩黄色一区二区| 亚洲乱码国产乱码精品精小说| 国产麻豆午夜三级精品| 日韩精品一区二区三区中文精品| 亚洲国产精品久久不卡毛片| 91最新地址在线播放| 中文字幕欧美激情| 国产精品一区二区在线播放 | 午夜a成v人精品| 色噜噜狠狠色综合中国| 亚洲视频在线一区观看| 成人午夜av影视| 中文字幕精品三区| 国产aⅴ精品一区二区三区色成熟| 欧美成人r级一区二区三区| 琪琪久久久久日韩精品| 538prom精品视频线放| 天天操天天色综合| 555夜色666亚洲国产免| 日韩成人精品在线| 欧美一级二级三级蜜桃| 久久99久国产精品黄毛片色诱| 666欧美在线视频| 免费在线观看视频一区| 91精品国产综合久久久久久久久久| 视频一区欧美精品| 欧美高清视频一二三区| 视频一区二区不卡| 日韩欧美一区电影| 激情另类小说区图片区视频区| 精品久久久久久最新网址| 久久精品国产一区二区| 亚洲精品一区二区三区精华液| 国产一区二区三区免费观看| 国产日产欧产精品推荐色 | 亚洲精品在线免费播放| 精品在线免费观看| 久久精品视频在线看| aaa国产一区| 亚洲第一主播视频| 欧美tk—视频vk| av爱爱亚洲一区| 亚洲高清在线精品| 久久色视频免费观看| 北条麻妃一区二区三区| 亚洲国产精品久久不卡毛片| 日韩美女天天操| 99精品久久99久久久久| 天天爽夜夜爽夜夜爽精品视频| 久久婷婷久久一区二区三区| 不卡在线观看av| 天堂成人国产精品一区| 国产人成一区二区三区影院|