weidizhang/php-timed-tasks

使用PHP轻松管理和创建多个定时任务

dev-master 2016-08-28 21:55 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:04:15 UTC


README

由Weidi Zhang创建

安装

composer require weidizhang/php-timed-tasks:dev-master

用法

首先,需要引入自动加载器并使用类。

require "vendor/autoload.php";

use weidizhang\PHPTimedTasks\Task;
use weidizhang\PHPTimedTasks\TimedTaskManager;

创建一个新的TimedTaskManager对象

$manager = new TimedTaskManager();

使用lambda函数

$manager->addTask(
	new Task(function() {
		echo "[" . date("h:i:s A") . "] Hello every 10 seconds!\n";
	}, 10)
);

这里,这个函数将每10秒运行一次。

使用已声明的函数

function myFunc() {
	echo "[" . date("h:i:s A") . "] Hello every 10 seconds!\n";
}

$manager->addTask(
	new Task("myFunc", 10)
);

只需传入函数名作为字符串。

设置最大运行次数

$manager->addTask(
	(new Task(function() {
		echo "[" . date("h:i:s A") . "] Hello every 10 seconds!\n";
	}, 10))
	->setMaxTimes(5)
);

这是通过调用Task类的setMaxTimes函数实现的,该函数接受一个整数。

在这个例子中,这个任务总共将运行5次,每次间隔10秒。

设置参数

$manager->addTask(
	(new Task(function($a, $b) {
		echo "[" . date("h:i:s A") . "] Hello every 10 seconds for 5 times with arguments \"" . $a . "\" and \"" . $b . "\"\n";
	}, 10))
	->setMaxTimes(5)
	->addParameters(array(
		"test1",
		"test2"
	))
);

这是通过调用Task类的addParameters函数实现的,该函数接受一个数组。

使用随机间隔范围

$manager->addTask(
    (new Task(function() {
        echo "[" . date("h:i:s A") . "] Hello every 5-10 seconds!\n";
    }))
	->setRandomIntervalRange(5, 10)
);

这个任务将每5到10秒运行一次,每次使用这个范围内的随机间隔。

运行任务

第一种方法是使用

$manager->runTasks();

在此之后的所有代码在还有任务剩余的情况下将不会运行。

如果您有其他任务要执行,请使用您自己的while循环

while ($manager->runTasksOnce()) {
	// your additional logic
}

删除任务

删除任务很简单。addTask函数返回一个整数。

$index = $manager->addTask( ... );

这可以用来删除任务。

$manager->removeTask($index);

许可

请阅读LICENSE.md了解您可以使用此源代码做什么以及不能做什么。