php 准时义务

google百度了下,PHP义务大体上可以分为三类 最近需要去准时请求数据,然后剖析之后 指定响应的文本 通过socket广播给用户。详细的剖析 制订文本的营业 不庞大。 使用curl 请求数据 。然则对于...

google百度了下,PHP义务大体上可以分为三类

最近需要去准时请求数据,然后剖析之后 指定响应的文本 通过socket广播给用户。详细的剖析 制订文本的营业 不庞大。 使用curl 请求数据 。然则对于准时义务这一块怎么使用都不行。


1、服务器设计义务

WIN服务器可以直接使用准时义务执行相关的应用程序,LINUX服务器则可以通过在/etc/crontab里添加准时义务来实现。

php -f 文件所在位置

瑕玷:最低一分钟的义务设计。 许多请求需要一分钟以内。 需要储存上一次的数据,下次再去取。


2、通过死循环实现义务自动执行

确立一个程序文件页面,通过ignore_user_abort来设置关闭浏览器页面后仍可执行,那么,在运行该程序页面后,您所需要的义务设计便会一直自动执行。对于一样平常的PHP程序员来说,若是没有足够的掌握,这种操作是不被允许的,由于死循环极容易使用服务器当机。

set_time_limit(0);   // 作废超时
// ignore_user_abort(true);  //  浏览器关闭 继续执行 
while (true) {
    dongsomthing();
    sleep( 120); // 准时 120秒   usleep()  毫秒  1000毫秒=1秒
}
die; 

sleep 和 usleep 都不太正确

瑕玷:长时间占有内存,经常无缘无故 自己暂停。


3、通过workman品级三方框架。

<?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();
    
?>

可以正确到秒, 照样会经常暂停! 别人说他能跑半年 一直。 我是不是开的义务比较多,由于我又8个义务 没30秒 请求一次。
参考workman手册 (https://www.kancloud.cn/walko...)。使用方式很简单 设置好php环境,然后直接命令行执行改文件就行了

php -f 文件所在位置


4、使用GatewayWorker搭建socket 服务端

https://www.workerman.net/workerman-chat

由于需要剖析出文本之后广播到每个客户端,那如何在挪用socket方式推送给每个客户呢?
参考其他项目中推送新闻 (https://www.kancloud.cn/walko...)


思源资源网:分类流动

1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各种产物的最新流动,优惠券领取点击进入

3.广告同盟: 整理了现在主流的广告同盟平台,若是你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/2753

  • 发表于 2021-04-05 14:40
  • 阅读 ( 260 )
  • 分类:互联网

0 条评论

请先 登录 后评论
aa25201
aa25201

700 篇文章

你可能感兴趣的文章

相关问题