一般用法是 declare(ticks=n);
拿declare(ticks=1)來說,這句主要作用有兩種:
1、zend引擎每執行1條低階語句就去執行一次 register_tick_function() 註冊的函式。
可以粗略的理解為每執行一句php**(例如:$num=1;)就去執行下已經註冊的tick函式。
乙個用途就是控制某段**執行時間,例如下面的**雖然最後有個死迴圈,但是執行時間不會超過5秒。
執行 php timeout.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
declare
(ticks=1);
// 開始時間
$time_start
= time();
// 檢查是否已經超時
function
check_timeout()秒\n"
);
}
}
// zend引擎每執行一次低階語句就執行一下check_timeout
register_tick_function(
'check_timeout'
);
// 模擬一段耗時的業務邏輯
while
(1)
// 模擬一段耗時的業務邏輯,雖然是死迴圈,但是執行時間不會超過$timeout=5秒
while
(1)
2、declare(ticks=1);每執行一次低階語句會檢查一次該程序是否有未處理過的訊號,測試**如下:
執行 php signal.php
然後ctl+c 或者 kill -sigint pid 會導致執行**跳出死迴圈去執行pcntl_signal註冊的函式,效果就是指令碼exit列印「get signal sigint and exi」退出 1
2
3
4
5
6
7
8
9
<?php
declare
(ticks=1);
pcntl_signal(sigint,
function
());
echo
"ctl + c or run cmd : kill -sigint "
. posix_getpid().
"\n"
;
while
(1)
PHP7中標量型別declare的用法詳解
這篇文章主要介紹了php7標量型別declare用法,結合例項形式分析了php7中標量型別declare的功能 特性與相關使用技巧,需要的朋友可以參考下 php7為了提高執行效率,在函式方法中增加了標量型別 布林 浮點 整型 字元 的申明特性,節省了對資料型別的檢測。php7 仍然支援弱型別檢測,即...
SQL中的declare用法
平時寫sql查詢 儲存過程都是憑著感覺來,沒有 過sql的具體語法,一直都是按c 那一套往sql上模仿,前幾天專案中碰到乙個問題引起了我對declare定義變數的作用域的興趣。大家都知道c 中的區域性變數,在if中如果我們定義乙個變數的話他的作用到if結束為止,if外是不識別這個變數的,else裡都...
Dojo中declare和define的區別
先看define。作用是定義乙個模組 module 這個模組可以被require引用,引用了之後就可以使用define裡面的東西。乙個模組想當然,裡面幹什麼事情,不一定全部自己實現。就像人要coding,除了腦子,也不能沒有電腦 鍵盤。因此,define的第乙個引數就是將要用到的其他模組引進來。第二...