向大家请教,能否用workerman来定时调用第三方网站API

lnjz999

请教大家一个问题。

利用Thinkphp搭建了一个网站,但是在网站的首页需要有调用一个第三方网站的API。需要每个几秒向第三方网站的API发送请求,返回一组json实时数据。

请问能否用workerman作为中间部分,在服务器自动定时去调用这个API。然后当用户访问网站首页的时候,再通过ajax调用wokerman的url,来实现这些返回的数据在网站页面自动实时刷新?

如果可行,能麻烦告诉我下实现的流程和步骤吗?谢谢大家了~

5283 3 0
3个回答

latin

完全可以啊。利用workemran的定时器功能去curl访问api,返回的结果保存到一个全局变量里面,网站访问workerman 的http接口,返回这个全局变量的结果。

代码类似

require_once __DIR__ . '/Workerman/Autoloader.php';
use Workerman\Worker;
use Workerman\Lib\Timer;
$curl_result = null;
$worker = new Worker('http://0.0.0.0:6666');
$worker->onWorkerStart = function() {
    Timer::add(5, function(){
        global $curl_result;
        curl_init.....
             $curl_result = curl_exec(..);
        });
};
$worker->onMessage = function($con, $msg){
    global $curl_result;
    $con->close($curl_result);
};
Worker::runAll();

你的网站通过file_get_contents(' http://workerman_ip:6666 ')就可以了.

  • lnjz999 2016-10-28

    感谢你的指导与思路。万分感谢!

lnjz999

@latin:还要麻烦你一下,如果要是想要实现,前端的数据自动刷新呢?类似于股票行情那种形式。我想了想,是不是要用到http://www.workerman.net/web-sender 。在Timer::add中,每次获取完数据之后,向前端推送?

  • 暂无评论
hmmm

用户量不大的话,web-msg-sender确实简单些

  • 暂无评论
年代过于久远,无法发表回答
🔝