各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

thinkphp5使用workerman定时器定时爬取站点内容的代码

管理员 2023-09-05
PHP
177

thinkphp5使用workerman定时器定时爬取站点内容的代码

内容导读

收集整理的这篇技术教程文章主要介绍了thinkphp5使用workerman定时器定时爬取站点内容的代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2358字,纯文字阅读大概需要4分钟

内容图文

本篇文章给大家分享的内容是关于thinkphp5使用workerman定时器定时爬取某站点新闻资讯等的内容,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们.

1、首先通过 composer 安装workerman,在thinkphp5完全开发手册的扩展-》coposer包-》workerman有详细说明:

#在项目根目录执行以下指令composer require topthink/think-worker

2.在项目根目录创建服务启动文件 server.php:

<?phpdefine('APP_PATH', __DIR__ . '/application/');define("BIND_MODULE", "server/Worker");// 加载框架引导文件require __DIR__ . '/thinkphp/start.php';

3、在application里创建server模块,并在server里创建控制器 Worker.php:

<?phpnamespace appservercontroller;use thinkworkerServer;class Worker extends Server{    public function onWorkerStart($work)    {        $handle=new Collection();        $handle->add_timer();    }}

4.创建Collection.php类

<?phpnamespace appservercontroller;use appcommonmodelArticleModel;use thinkController;use WorkermanLibTimer;class Collection extends Controller{	public function __construct(){		  parent::__construct();	}	public function add_timer(){        Timer::add(10, array($this, 'index'), array(), true);//时间间隔过小,运行会崩溃    }    /**     * 采集数据     */    public function index(){               $total=$this->get_jinse();        return json(['msg'=>"此次采集数据共 $total 条。",'total'=>$total]);    }      /**     * 获取金色财经资讯     */    public function get_jinse(){        $url="https://api.jinse.com/v4/live/list?limit=20";        $data=$this->get_curl($url);        $data=json_decode($data);        $data=$data->list[0]->lives;        $validate=validate('Article');        $items=[];        foreach ($data as $k=>$v){            preg_match('/【(.+?)】(.+)/u',$v->content,$content);            if(!@$content[2]){                continue;            }            $list=array(                'source_id'=>$v->id,                'source'=>'金色财经',                'title'=>trim(preg_replace('/.*|/','',$content[1])),                'content'=>$content[2],            );            if($validate->check($list)){                $items[]=$list;            }        }        if($items){            krsort($items);            $model=new ArticleModel();            $model->saveAll($items);        }        return count($items);    }    public function get_curl($url){        $ch=curl_init();        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);        curl_setopt($ch,CURLOPT_URL,$url);        curl_setopt($ch,CURLOPT_HEADER,0);        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);        $output = curl_exec($ch);        if($output === FALSE ){            echo "CURL Error:".curl_error($ch);        }        curl_close($ch);        // 4. 释放curl句柄        return $output;    }  }

5、启动服务 php server.php start

相关推荐:

Thinkphp中模板继承是什么?模板继承的实例

如何利用PHP进行用户名和密码的验证(代码)

以上就是thinkphp5使用workerman定时器定时爬取站点内容的代码的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的thinkphp5使用workerman定时器定时爬取站点内容的代码全部内容,希望文章能够帮你解决thinkphp5使用workerman定时器定时爬取站点内容的代码所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

扫码关注

qrcode

QQ交谈

回顶部