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...