1. 程式人生 > >PHP-手工執行任務&定時任務的處理方式

PHP-手工執行任務&定時任務的處理方式

1:phpweb方式

<?php ignore_user_abort();//關掉瀏覽器,PHP指令碼也可以繼續執行. set_time_limit(0);// 可以讓程式無限制的執行下去 ini_set('memory_limit','512M'); // 設定記憶體限制 $interval=60*30;// 每隔半小時執行 do{   //ToDo 各種需要處理的定時任務   sleep(1);// 等待1秒 } while(true); 使用php的特性,直接在某個php檔案寫入以上程式碼,進行訪問。優點:容易寫,開發速度快,直接在後臺執行 缺點:難維護,穩定性差,不好檢視,有處理延時

2:php-cli 可以用php-cli(命令文字)的方式執行(綠色php檔案位置請對應調整)

/usr/local/php5-7.1.13-20180201-134129/bin/php  /Library/Webserver/Documents/daigou/pcntl2.php

<?php echo 'test';exit; 輸出:test 沒錯,只需要php檔案,不關閉執行視窗就可以一直執行下去。優點:開發速度快,可後臺執行,易維護,易檢視 缺點:容易出現記憶體洩漏,有一定的技術要求,穩定性一般,有處理延時

3. swoole擴充套件 swoole擴充套件已經實現了定時任務,只需要呼叫就行。 <?php swoole_timer_tick(3000, function () {     echo "after 3000ms.\n";      swoole_timer_after(14000, function () {            echo "after 14000ms.\n";     }); });優點:穩定性高,有定時器校正,定時粒度高,使用容易,開發速度快 缺點:需要linux,需要安裝swoole

4. linux大法:crontab 使用linux自帶的crontab定時任務,訪問執行在web模式下的php crontab -e  檢視所有定時任務 crontab的語法是  時間   程式   檔案( >是覆蓋  >>是追加),如: (1)*/5 * * * * /web/php_admin/yii rate/index >> /app/web/runtime/admin_logs/dim_cron (2) 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart(表示每月1、10、22日的4 : 45重啟lighttpd) (3)tail -f /app/web/runtime/admin_logs/dim_cron  再觀察下就知道他有沒有執行了優點:穩定性一般,沒有延時 缺點:開發需要linux,定時粒度1分鐘較長