在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/網(wǎng)絡(luò)安全/ 實(shí)現(xiàn)php的異步任務(wù)隊(duì)列

實(shí)現(xiàn)php的異步任務(wù)隊(duì)列

需求就是異步執(zhí)行任務(wù)隊(duì)列,想要盡可能快的處理,所以不想定時(shí)隔一段時(shí)間執(zhí)行一次任務(wù)隊(duì)列。想要一直檢查任務(wù)隊(duì)列,有新任務(wù)就要立馬執(zhí)行。

參考網(wǎng)上關(guān)于定時(shí)任務(wù)的方案寫的如下代碼:
這是一個(gè)腳本文件,反復(fù)自己訪問(wèn)自己來(lái)實(shí)現(xiàn)“循環(huán)“。

set_time_limit(0); // 不限制時(shí)間

  // 獲取當(dāng)前頁(yè)面路徑
  $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

  // 后臺(tái)可控制是否開啟任務(wù)
  $enable_crontab_run = variable_get('enable_crontab_run', 0);

  if (!$enable_crontab_run) {
    die('定時(shí)任務(wù)腳本終止');
  }

  // 獲取所有待處理任務(wù)
  # code...
  foreach ($result as $value) {
    // 處理單個(gè)任務(wù)
    # code...
  }

  // 再次訪問(wèn)當(dāng)前頁(yè)面
  file_get_contents($url);

不知道這種方案能行嗎?

回答
編輯回答
魚梓

如果我沒(méi)看錯(cuò),你這是搞了一個(gè)無(wú)法退出“遞歸”啊。。

話說(shuō),你就寫一個(gè) cli程序 while(true){do sth} 的邏輯不就可以了嗎。如果擔(dān)心他掛掉,你在用一個(gè) supervisor 去監(jiān)控著,進(jìn)程掛了就拉起一個(gè)。

如果你上面的程序是web頁(yè)面的話,把最后面一句 file_get_contents改成 header("Location: $url"); 你只要保證瀏覽器不死,就可以了。

2017年4月28日 17:13