1、windows 的計劃任務
2、linux的腳本程式
3、讓web浏覽器定時重新整理
這裡主要使用到crontab這個指令,
使用方式 :
crontab filecrontab [ -u user ] [ -u user ] { -l | -r | -e }
說明 :
crontab 是用來讓使用者在固定時間或固定間隔執行程式之用
使用crontab寫shell腳本,然後讓PHP調用shell,這個是利用linux的特性,應該還不算PHP自身語言的特性
<a href="http://images.cnblogs.com/cnblogs_com/phphuaibei/201112/201112161840564770.jpg"></a>
PHP腳本執行時間限制,預設的是30m 解決辦法:set_time_limit();或者修改PHP.ini 設定max_execution_time時間(不推薦)
如果用戶端浏覽器關閉,程式可能就被迫終止,解決辦法:ignore_user_abort即使關閉頁面依然正常執行
如果程式一直執行很有可能會消耗大量的資源,解決辦法使用sleep使用程式休眠一會,然後在執行
PHP定時執行的代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<code><?php</code>
<code>ignore_user_abort();</code><code>//關掉浏覽器,PHP腳本也可以繼續執行.</code>
<code>set_time_limit(3000);</code><code>// 通過set_time_limit(0)可以讓程式無限制的執行下去</code>
<code>$interval</code><code>=5;</code><code>// 每隔5s運作</code>
<code>//方法1--死循環</code>
<code>do</code><code>{</code>
<code> </code><code>echo</code> <code>'測試'</code><code>.time().</code><code>'<br/>'</code><code>;</code>
<code> </code><code>sleep(</code><code>$interval</code><code>);</code><code>// 等待5s </code>
<code>}</code><code>while</code><code>(true);</code>
<code>//方法2---sleep 定時執行</code>
<code> </code><code>require_once</code> <code>'./curlClass.php'</code><code>;</code><code>//引入檔案</code>
<code> </code>
<code> </code><code>$curl</code> <code>=</code><code>new</code> <code>httpCurl();</code><code>//執行個體化</code>
<code> </code><code>$stime</code> <code>=</code><code>$curl</code><code>->getmicrotime();</code>
<code> </code><code>for</code><code>(</code><code>$i</code><code>=0;</code><code>$i</code><code><=10;</code><code>$i</code><code>++){</code>
<code> </code>
<code> </code><code>echo</code> <code>'測試'</code><code>.time().</code><code>'<br/>'</code><code>;</code>
<code> </code><code>sleep(</code><code>$interval</code><code>);</code><code>// 等待5s</code>
<code> </code><code>}</code>
<code> </code><code>ob_flush();</code>
<code> </code><code>flush</code><code>();</code>
<code> </code><code>$etime</code> <code>=</code><code>$curl</code><code>->getmicrotime();</code>
<code> </code><code>echo</code> <code>'<hr>'</code><code>;</code>
<code> </code><code>echo</code> <code>round</code><code>((</code><code>$etime</code><code>-stime),4);</code><code>//程式執行時間</code>
<code> </code>
測試的時候發現這個效率并不是很高,
<a href="http://images.cnblogs.com/cnblogs_com/phphuaibei/201112/201112161840567834.png"></a>
個人感覺PHP定時執行任務的效率不是很高,建議關于定時執行任務的工作還是交給shell來做吧,比較那才是王道。
ps:那個死循環的方法好像是惡意攻擊網站經常使用的方法