本篇文章给大家分享的内容是关于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
相关推荐:
以上就是thinkphp5使用workerman定时器定时爬取站点内容的代码的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号