php declare的一般用法是“declare(ticks=N);”,其作用是Zend引擎每执行1条低级语句就去执行一次“register_tick_function()”注册的函数。

推荐:《PHP视频教程》

php中declare的作用详解

一般用法是 declare(ticks=N);

拿declare(ticks=1)来说,这句主要作用有两种:

1、Zend引擎每执行1条低级语句就去执行一次 register_tick_function() 注册的函数。

可以粗略的理解为每执行一句php代码(例如:$num=1;)就去执行下已经注册的tick函数。

一个用途就是控制某段代码执行时间,例如下面的代码虽然最后有个死循环,但是执行时间不会超过5秒。

运行 php timeout.php

declare (ticks=1);

// 开始时间

$time_start = time();

// 检查是否已经超时

function check_timeout(){

// 开始时间

global $time_start ;

// 5秒超时

$timeout = 5;

if (time()- $time_start > $timeout ){

exit ( "超时{$timeout}秒\n" );

}

}

// Zend引擎每执行一次低级语句就执行一下check_timeout

register_tick_function( 'check_timeout' );

// 模拟一段耗时的业务逻辑

while (1){

$num = 1;

}

// 模拟一段耗时的业务逻辑,虽然是死循环,但是执行时间不会超过$timeout=5秒

while (1){

$num = 1;

}

2、declare(ticks=1);每执行一次低级语句会检查一次该进程是否有未处理过的信号,测试代码如下:

运行 php signal.php

然后CTL+c 或者 kill -SIGINT PID 会导致运行代码跳出死循环去运行pcntl_signal注册的函数,效果就是脚本exit打印“Get signal SIGINT and exi”退出

declare (ticks=1);

pcntl_signal(SIGINT, function (){

exit ( "Get signal SIGINT and exit\n" );

});

echo "Ctl + c or run cmd : kill -SIGINT " . posix_getpid(). "\n" ;

while (1){

$num = 1;

}

php declare 作用,php declare用法详解相关推荐

  1. mysql游标 原理解说_mysql存储过程之游标(DECLARE)原理与用法详解

    本文实例讲述了mysql存储过程之游标(DECLARE)原理与用法.分享给大家供大家参考,具体如下: 我们在处理存储过程中的结果集时,可以使用游标,因为游标允许我们迭代查询返回的一组行,并相应地处理每 ...

  2. oracle ltrim函数作用,Oracletrim函数用法详解

    今天看oracle文档,发现trim函数的用法不仅仅局限于去除字符串的空格!特翻阅官方解释,并最如下实验,希望大家共同学习! 今天看Oracle文档,发现trim函数的用法不仅仅局限于去除字符串的空格 ...

  3. accessors 作用_lombok @Accessors用法详解(一看就能就懂)

    最近看到代码里面有@Accessors注解,看了一些文章没理解,这个一看就能懂: @Accessors(chain=true) 链式访问,该注解设置chain=true,生成setter方法返回thi ...

  4. python中values作用_Python values()与itervalues()的用法详解

    dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value: d = { 'Adam': 95, 'Li ...

  5. c语言getline作用,C++ cin.getline及getline()用法详解

    下面先看下C++ cin.getline用法,具体内容如下所示: 使用 C++ 字符数组与使用 string 对象还有另一种不同的方式,就是在处理它们时必须使用不同的函数集.例如,要读取一行输入,必须 ...

  6. linux中whoami命令的作用是,linux whoami命令参数及用法详解(linux查看登陆用户名)

    linux whoami命令参数及用法详解(linux查看登陆用户名) 2019年05月31日 | 萬仟网科技 | 我要评论 whoami 命令显示登录名.与使用命令 who 并指定 am i 不同, ...

  7. sort在c语言中的作用,c语言中sort的用法详解.docx

    c语言中sort的用法详解.docx C语言中SORT的用法详解C语言的学习很多是比较复杂的,那么C语言中SORT的用法的用法你知道吗下面学习啦小编就跟你们详细介绍下C语言中SORT的用法的用法,希望 ...

  8. c语言中funx的作用,c语言中fun用法详解

    C语言中fun用法详解 fun函数是自定义的C/C++语言函数,函数功能多样.该函数名为"函数"英文function的简写,一般在示例和试题中使用,通常在主函数中被调用. C/C+ ...

  9. c语言for表达式1的作用,C语言for语句用法详解

    C语言for语句用法详解 C语言是一门高级计算机编程语言,设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.下面小编给大家介绍C语言f ...

  10. emit python 作用_PyQT5 emit 和 connect的用法详解

    对于PyQT4, PyQT5在一些使用上有着比较明显的变化有很大的变化,让人惊讶是在emit和connect上的一些变化比较有意思,相信也是QT为了更好的和Python相结合做的改进. 先上一张图: ...

最新文章

  1. Structured Streaming编程 Programming Guide
  2. fasta.img 是什么文件?
  3. 关闭应用程序的几种方法
  4. oracle游标缓存,【oracle】游标——数据的缓存区
  5. 设计模式学习之---Facade(外观)模式
  6. LINQ语法类似于SQL的语法
  7. 如何使用预览在 Mac 上将 HEIC 文件更改为 JPEG
  8. 信号与系统 拉普拉斯变换
  9. idea热部署(更新jsp代码不用重编译Tomcat)
  10. FileZilla中文乱码解决方法 与 设置界面为中文
  11. python给手机发短信_使用 Python 发送短信
  12. Activity切换闪屏问题
  13. 【Java笔记】(十):swing图形界面
  14. 内核查找符号指针函数kallsyms_lookup_name
  15. 获取和设置默认打印机
  16. QQ查询信息php,查询QQ信息
  17. netscreenfortinet
  18. 【硬件和驱动相关】wifi设备没有工作 ubuntu18.0.4 无线网卡 intel 6 AX200
  19. 【UV打印机】PrintExp打印软件教程(五)-高级
  20. kali虚拟机如何使用桥接模式连接外网

热门文章

  1. 在共享dll中使用mfc_在SpringBoot中使用Spring Session解决分布式会话共享问题
  2. bat窗口大小设置_Tomcat的JVM和连接数设置
  3. go test 如何输出到控制台_GO笔记之GO命令快速体验
  4. python gui tkinter_python学习之GUI(Tkinter)
  5. 常熟理工学院计算机网络基础,常熟理工学院计算机网络复习题之简答题
  6. python中raw函数_Python apply函数
  7. PIC16F877矩阵键盘的识别
  8. Beautiful Soup库
  9. sqlserver 2014 删除主键约束
  10. F. 更改apache端口号