PHP 中的睡眠命令返回非零
我有一个脚本,它作为 Drupal 模块的一部分运行。 在这个模块中,我使用 cURL 函数从远程网站请求 html 页面,然后解析 html 内容并将其写入我的数据库。 我希望在对远程服务器发出的每个请求之间有一个延迟,因此我在 PHP 脚本中添加了 sleep()
。
function get_me_data()
{
for( 15 iterations)
{
$html = file_get_contents($search_url);
//parse html contents
$delay = mt_rand($interval1,$interval2); // interval1 = 0 , interval2=30
$retval = sleep($delay);
}
}
- 函数
get_me_data()
由 cron 作业启动(hook_cron 在 .module 文件中实现)。 - 我还尝试在使用 sleep 命令之前刷新流。 使用flush(); ob_flush();fflush(文件指针); ob_implicit_flush(true)
碰巧在 4-5 次迭代之后,sleep()
命令返回非零值。 当调用 sleep()
时,脚本会在下一次迭代中中止
如果我在这里忽略了 sleep()
的任何方面,请告诉我。 我正在使用 PHP 版本 5.3 &德鲁帕尔6
I have a script, that is run as a part of my module in Drupal.
In this module, I use cURL functions to request html page from a remote website, then I parse the html content and write it to my database.
I wanted to have a delay between every request that I do to the remote server, hence I added sleep()
in my PHP script.
function get_me_data()
{
for( 15 iterations)
{
$html = file_get_contents($search_url);
//parse html contents
$delay = mt_rand($interval1,$interval2); // interval1 = 0 , interval2=30
$retval = sleep($delay);
}
}
- function
get_me_data()
is initiated by cron job(hook_cron implemented in .module file). - I have also tried to flush streams before the usage of sleep command.
usedflush(); ob_flush();fflush(filepointer); ob_implicit_flush(true)
It so happens that after 4-5 iterations, sleep()
command returns NON ZERO value.
the script aborts in the next iteration when sleep()
is called
Let me know, if I am overlooking any aspect of sleep()
here.
I am using, PHP version 5.3 & Drupal 6
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据文档 http://php.net/manual/en/function.sleep.php 可以返回非零值。
睡眠中的注释使用 time_sleep_until() 因为它不会被打扰。
According to the docs http://php.net/manual/en/function.sleep.php can return non zero values.
A comment in the sleep uses time_sleep_until() because it doesn't get interrupted.