google百度了下,PHP任務大致上能夠分爲三類php
最近須要去定時請求數據,而後分析以後 指定相應的文本 經過socket廣播給用戶。 程序員
具體的分析 制定文本的業務 不復雜。 使用curl 請求數據 。可是對於定時任務這一塊怎麼使用都不行。數據庫
WIN服務器能夠直接使用定時任務執行相關的應用程序,LINUX服務器則能夠經過在/etc/crontab裏添加定時任務來實現。瀏覽器
php -f 文件所在位置
缺點:最低一分鐘的任務計劃。 不少請求須要一分鐘之內。 須要儲存上一次的數據,下次再去取。服務器
創建一個程序文件頁面,經過ignore_user_abort來設置關閉瀏覽器頁面後仍可執行,那麼,在運行該程序頁面後,您所須要的任務計劃便會一直自動執行。對於通常的PHP程序員來講,若是沒有足夠的把握,這種操做是不被容許的,由於死循環極容易使用服務器當機。併發
set_time_limit(0); // 取消超時 // ignore_user_abort(true); // 瀏覽器關閉 繼續執行 while (true) { dongsomthing(); sleep( 120); // 定時 120秒 usleep() 毫秒 1000毫秒=1秒 } die;
sleep 和 usleep 都不太精確 框架
缺點:長時間佔據內存,常常平白無故 本身暫停。curl
···socket
<?php use \Workerman\Worker; use \Workerman\Lib\Timer; require_once __DIR__ . './Workerman/Autoloader.php'; $task = new Worker(); // 開啓多少個進程運行定時任務,注意多進程併發問題 $task->count = 1; $task->onWorkerStart = function($task) { // 每2.5秒執行一次 支持小數,能夠精確到0.001,即精確到毫秒級別 $time_interval = 30; Timer::add($time_interval, function() { dosomthing() echo "task run\n"; }); }; // 運行worker Worker::runAll(); ?>
···ui
能夠精確到秒, 仍是會常常暫停! 別人說他能跑半年 不停。 我是否是開的任務比較多,由於我又8個任務 沒30秒 請求一次。
參考workman手冊 (https://www.kancloud.cn/walko...)
使用方法很簡單 配置好php環境,而後直接命令行執行改文件就好了
php -f 文件所在位置
https://www.workerman.net/workerman-chat
由於須要分析出文本以後廣播到每一個客戶端,那如何在調用socket方法推送給每一個客戶呢?
參考其餘項目中推送消息 (https://www.kancloud.cn/walko...)
那如何存入數據庫呢?
參考https://www.kancloud.cn/walko...