1
cdffh 2014-01-13 15:06:25 +08:00 ![]() 用 setsid 试试?
|
![]() |
2
skydiver 2014-01-13 15:08:50 +08:00 via Android ![]() 楼主这种用法本来就是不对的,放弃吧。
|
![]() |
3
shiny 2014-01-13 15:09:30 +08:00 ![]() 1、用 ignore_user_abort 可以让用户中断连接的时候避免进程退出
2、再需要设置 set_time_limit(0) 来避免超时的中断 ucenter 的计划任务就是这么做的吧。 |
![]() |
4
breeswish 2014-01-13 15:10:35 +08:00 ![]() 想要用作daemon,就用php-cli,并且关闭运行时间限制,不要用php-fpm或者mod-php
|
![]() |
5
h2ero 2014-01-13 15:53:06 +08:00 ![]() 如果用的FastCGI可以用`fastcgi_finish_request();`
|
![]() |
6
bearcat001 OP @cdffh 应该也是不行的
|
![]() |
7
bearcat001 OP @skydiver 恩,还是在cli下写daemon吧
|
![]() |
8
bearcat001 OP @shiny 如果是服务端启动一个耗时任务呢?这个任务写的时候就是CLI下运行,因为时长问题
|
![]() |
9
bearcat001 OP @breeswish 恩,打算换了,多谢
|
![]() |
10
bearcat001 OP @h2ero 多谢
fastcgi_finish_request和ignore_user_abort类似都是继续执行当前脚本,没有办法让exec启动的cli命令驻留下来 |
11
jasontse 2014-01-13 16:04:35 +08:00 via iPad ![]() @bearcat001 如果是耗时任务就应该向daemon推送队列异步处理。
|
![]() |
12
bearcat001 OP @jasontse 恩,打算这么做了,多谢~
|
![]() |
13
picasso250 2014-01-14 16:21:20 +08:00
php-resque
|
14
judasnow 2014-01-14 21:26:33 +08:00
要是我 就定时执行一段 php 脚本(用crontab或者whatever)然后用redis模拟保存全局变量(每次脚本执行的时候 就从redis读取信息初始化 完成之后保存之)
|
![]() |
15
jevonszmx 2015-04-24 09:55:42 +08:00
如果你没服务器的权限,仅开发权限的话,就写php脚本,用crontab定时执行;
如果你有服务器权限,可以给php编译一个PCNTL模块,官方文档在这里: http://php.net/manual/zh/book.pcntl.php,可以启动一个deamon在后台,比如有个大队列数据需要一直需要php同步入库,可以fork一个进程一直在后台跑,比crontab频率高,还可以多进程。 |