php 实现setinterval
在 PHP 中实现类似 JavaScript 的 setInterval 功能,可以通过循环结合时间控制来实现。以下是几种常见的方法:
使用 sleep 函数实现定时执行
通过 sleep 或 usleep 函数暂停脚本执行,达到定时效果:
while (true) {
// 执行任务代码
echo "Task executed at " . date('Y-m-d H:i:s') . "\n";
// 暂停 5 秒
sleep(5);
}
使用 ignore_user_abort 和 set_time_limit 实现后台持续运行
结合 ignore_user_abort 和 set_time_limit 可以让脚本在后台持续运行:

ignore_user_abort(true);
set_time_limit(0);
$interval = 5; // 间隔秒数
do {
// 执行任务代码
file_put_contents('log.txt', 'Task ran at ' . date('Y-m-d H:i:s') . PHP_EOL, FILE_APPEND);
// 等待间隔时间
sleep($interval);
} while (true);
使用 cron 定时任务
对于生产环境,更推荐使用系统的 cron 定时任务来实现定期执行:
-
创建 PHP 脚本文件
task.php:
<?php // 任务代码 file_put_contents('log.txt', 'Cron task ran at ' . date('Y-m-d H:i:s') . PHP_EOL, FILE_APPEND); -
设置 crontab 每5分钟执行一次:
*/5 * * * * /usr/bin/php /path/to/task.php
使用 Swoole 定时器(需要安装 Swoole 扩展)
如果使用 Swoole 扩展,可以创建更精确的定时器:
Swoole\Timer::tick(5000, function () {
echo "Swoole timer executed at " . date('Y-m-d H:i:s') . "\n";
});
注意事项:
- PHP 是单线程同步执行的,原生 PHP 不适合处理长时间运行的间隔任务
- 对于重要任务,推荐使用 cron 或专业的任务队列系统
- 长时间运行的 PHP 脚本需要注意内存泄漏问题






