php实现秒定时
PHP实现秒级定时任务的方法
使用PHP实现秒级定时任务可以通过以下几种方式:
使用sleep函数循环执行
while (true) {
// 执行任务代码
echo "任务执行中...".PHP_EOL;
sleep(1); // 暂停1秒
}
这种方法简单直接,但会持续占用进程资源。
使用crontab设置秒级任务
Linux系统可以通过特殊配置实现秒级cron任务:
* * * * * php /path/to/script.php
* * * * * sleep 1; php /path/to/script.php
* * * * * sleep 2; php /path/to/script.php
...
* * * * * sleep 59; php /path/to/script.php
这种方法创建60个cron任务,每个任务间隔1秒执行。
使用Swoole定时器
安装Swoole扩展后可以使用高性能定时器:

$timer = Swoole\Timer::tick(1000, function () {
// 每1000毫秒执行一次
echo "定时任务执行\n";
});
// 需要保持进程运行
Swoole\Event::wait();
使用ReactPHP事件循环
$loop = React\EventLoop\Factory::create();
$loop->addPeriodicTimer(1, function () {
// 每秒执行的任务
echo "定时任务\n";
});
$loop->run();
使用Workerman框架
use Workerman\Worker;
use Workerman\Timer;
$worker = new Worker();
$worker->onWorkerStart = function() {
// 每1秒执行一次
Timer::add(1, function() {
echo "定时任务\n";
});
};
Worker::runAll();
注意事项
- 长时间运行的PHP脚本需要处理内存泄漏问题
- 确保脚本异常退出后能自动重启
- 生产环境建议使用Supervisor等进程管理工具监控
- 秒级任务对系统性能影响较大,需评估实际需求
以上方法可根据具体场景选择,简单任务可用sleep循环,高性能场景推荐Swoole或Workerman等专业解决方案。






