PHP declare(ticks = N)

今天有同事提到,要在后台脚本(crontab里的,或者daemon)调用pcntl_signal(),但担心declare(ticks = 1)会不会引起系统性能或稳定性方面的问题。

 
根本上,还是要看看declare(在zend_compile.c中,有tick的相关实现,估计再结合zend_language_parser.y)和pcntl_*(ext/pcntl/)的实现。暂时没时间,先把目前我想到的和猜测的记一下。
 
declare(ticks = N),告诉PHP,在当前scope内,每执行N句internal statements(opcodes),就中断当前正在做的,去执行通过register_tick_function注册的函数(如果有的话),执行完后再回到原来正在做的中断现场继续,这可能就是庆骏的所说的吧。但问题是,因为PHP statements和internal statements并非严格一一对应,所以ticks = N的N,可能不好确定。

 pcntl_signal,通过declare(ticks = 1),让PHP每执行完一句internal statement,就检查有没有相应的signal发生。因为,可能不像直接用C写的POSIX 程序,由kernel通知signal的发生。

 

to be continued...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值