通過Task Scheduler定時運行調用cURL的PHP指令碼____PHP

來源:互聯網
上載者:User

PHP本身沒有定時自動執行的功能,也不支援多線程。但是結合Task Scheduler和cURL,就可以彌補PHP的上述兩個缺陷,同時還可以脫離Apache伺服器環境,在任意路徑下運行PHP指令碼。 知識準備

cURL的學習與應用:
http://www.cnblogs.com/phphuaibei/archive/2011/09/29/2195838.html

Windows 7中使用Task Scheduler:
http://www.cnblogs.com/tylerdonet/archive/2011/05/25/2057227.html  中的“添加Windows任務”部分

How to use Windows Task Scheduler:
http://www.iopus.com/guides/winscheduler.htm 調用cURL多程式抓取網頁的PHP指令碼

batch.php

<?php$urls = array(         'http://www.baidu.com',         'http://www.csdn.net',         'http://www.google.com.hk'); // 初始化多線程$mh = curl_multi_init(); // 向多線程中添加每個單獨的cURL$conn = array();foreach ($urls as $key => $url) {         $conn[$key]= curl_init($url);                 curl_setopt($conn[$key],CURLOPT_HEADER, 0);         curl_setopt($conn[$key],CURLOPT_RETURNTRANSFER, 0);                 curl_multi_add_handle($mh,$conn[$key]);} // 執行cURL多線程do {         $mrc= curl_multi_exec($mh, $active);}while ($mrc == CURLM_CALL_MULTI_PERFORM);while ($active && $mrc == CURLM_OK){         if(curl_multi_select($mh) != -1) {                   do{                            $mrc= curl_multi_exec($mh, $active);                   }                   while($mrc == CURLM_CALL_MULTI_PERFORM);         }} // 釋放多線程中的每個cURL線程foreach ($urls as $key => $url) {         curl_error($conn[$key]);         curl_multi_remove_handle($mh,$conn[$key]);         curl_close($conn[$key]);} // 關閉多線程curl_multi_close($mh);?>

需要說明的是,cURL在PHP中的多執行緒其實並不是真正的多線程,而是用單線程批處理類比的多線程效果。 設定環境變數

為了方便調用php.exe,需要在環境變數的系統變數Path中添加php.exe所在目錄的路徑,如下圖所示:


設定Windows Task Scheduler

Windows 7環境下,啟動Task Scheduler(工作排程器)的方式有兩種,分別是:

1.      控制台→管理工具→工作排程器;

2.      開始→運行→輸入“工作排程器”或者“scheduled task”,斷行符號。


設定計劃任務來自動調用PHP指令碼的步驟如下:

1.      點擊“建立基本任務”,進入導航


2.      第一步,輸入計劃任務的名稱和描述


3.      設定任務開始的時間



4.      設定任務執行的具體操作



前述調用cURL的PHP指令碼放在E盤根目錄下,脫離了Apache伺服器環境。

此處填寫的程式(或指令碼)和參數需要再命令列下測試通過方才有效。

5.      完成後開啟屬性對話方塊,在“觸發器”中點擊“編輯”,設定自動重複執行的間隔




 

以上就是設定工作排程器的過程,之後每隔5分鐘會彈出一個php.exe的DOS視窗,則設定成功。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.