总结
豆包 AI 助手文章总结

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

不言
发布: 2018-07-26 09:19:45
原创
4284人浏览过

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

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

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

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

<?php

define('APP_PATH', __DIR__ . '/application/');
define("BIND_MODULE", "server/Worker");
// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';
登录后复制

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

<?php
namespace app\server\controller;
use think\worker\Server;

class Worker extends Server
{

    public function onWorkerStart($work)
    {
        $handle=new Collection();
        $handle->add_timer();
    }


}
登录后复制

4.创建Collection.php类

立即学习PHP免费学习笔记(深入)”;

<?php
namespace app\server\controller;
use app\common\model\ArticleModel;
use think\Controller;
use Workerman\Lib\Timer;

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定时器定时爬取站点内容的代码的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
豆包 AI 助手文章总结
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号