关于workerman与codeigniter结合使用的调用方式
请问一下,如果workerman想通过TP、CI之类的PHP框架来启用,但是框架里有部分配置文件使用了$_SERVER常量,CLI模式下获取不到$_SERVER会引起报错,这种是应该怎么处理?
class Mqtt extends CI_Controller {
public function index()
{
$worker = new Worker();
$worker->onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->subscribe('hello');
};
$mqtt->onMessage = function($topic, $content){
var_dump($topic, $content);
};
$mqtt->connect();
};
Worker::runAll();
}
}
=======================================================
问题二
启动执行:
以上这种启动是结合CI框架的启动方式,应该怎么加参数才可以实现类似直接启动workerman的下面效果
php start.php start -d
========================================================
问题三
CI和workerman之间通讯除了使用队列,还有其他可以在CI里主动去调用或者触发workerman响应的方法么(这里提问的并非workerman和客户端之间的通讯)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
自己找到了一个方法STDIN常量来判断是否CLI调用,来写入配置文件
第二个问题,看完Worker.php的源码,写了个控制器来暴力自己改传入的参数
第一个问题: 判断是否是CLI环境,有两种方法:
(1)使用PHP内置函数:php_sapi_name()
(2)使用PHP内置常量:PHP_SAPI
第二个问题:workerman框架本身不支持你说的这种参数的,除非修改内核代码,当然这是不推荐的。所以只能自己外面扩展封装一层,我看你的贴图代码已经实现类似效果了呢,就是这意思。
管用,感谢分享,解决了我的问题