• 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...

  • 相关阅读:
    Tomcat部署项目
    正则表达式
    文件的上传和下载
    实现扫码登陆
    onepill Android端
    部署SpringBoot到阿里云
    Gson
    HTML自动刷新页面
    Spring Data JPA根据属性名查询
    Spring Date JPA实现增删改查
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8334608.html
Copyright © 2020-2023  润新知