Linux-PHP做daemon是否可行

发布于 2016-12-30 04:34:30 字数 536 浏览 1097 评论 5

先上代码

// daemon.php
while(1) {
$data = @file_get_contents('http://127.0.0.1:1218/?name=sms_queue&opt=get');
if ($data != 'HTTPSQS_GET_END' && $data != 'HTTPSQS_ERROR') {
$command = substr($data,0,4);
if ($command == 'rece') {
// 接收到上行短信
} elseif ($command = 'send') {
// 要往外发短信
} else {
Continue;
}
} else {
sleep(1);
}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

晚风撩人 2017-10-12 21:56:48

1、脚本异常结束了,你可以写个在这里面加段代码把异常信息发到你的邮箱或者如果有短信网关的话还可以短信报警等。

2、重启代码就写个shell把这个进行结束了,然后重新执行就行。

甜柠檬 2017-07-31 03:34:31

当然可以
你要判断程序是否异常结束需求其他程序来监控它。
重启的话只能KILL掉再执行启动命令。

另:程序写成daemon,用pcntl_fork来实现应该更适合

偏爱自由 2017-06-28 21:17:36

有个开源的纯PHP写的web服务器 Nanoweb 完全可以证明这一点,这个服务器性能蛮高的

甜柠檬 2017-04-20 18:31:58

 自己看 改成这样会比较好点

<?php
// daemon.php
while(1) {
try{
$data = @file_get_contents('http://127.0.0.1:1218/?name=sms_queue&opt=get');
if ($data != 'HTTPSQS_GET_END' && $data != 'HTTPSQS_ERROR') {
$command = substr($data,0,4);
if ($command == 'rece') {
// 接收到上行短信
} elseif ($command = 'send') {
// 要往外发短信
} elseif ($command = 'exit'){
// 通过接口发送停止 命令来停止
exit();
}

}
// 不管有没有取到 停200毫秒 防止 不停的请求 接口
usleep(200);
}
catch (Exception $e){
print $e->getMessage();
}
}

?>

灵芸 2017-03-11 08:01:56

你写的这个也没大多问题,我说下我的看法:

首先我不建议自己用 file_get_contents 来写,如何队列服务挂掉的话,那么 file_get_contents 会使服务器的负载很高,可参考 @file_get_contents 函数会使服务器的负载很高,有什么好的办法解决?

推荐使用 HTTPSQS 的 php客户端 :php-httpsqs-client

如果某一条任务执行时间很长,那么会照成其他任务的等待,所以也推荐使用fork来处理任务。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文