vendor/codeages/biz-framework/src/Scheduler/Service/Impl/SchedulerServiceImpl.php
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
<?php
namespace Codeages\Biz\Framework\Scheduler\Service\Impl;
use Codeages\Biz\Framework\Scheduler\Dao\JobProcessDao;
use Codeages\Biz\Framework\Scheduler\Service\JobPool;
use Codeages\Biz\Framework\Scheduler\Service\SchedulerService;
use Codeages\Biz\Framework\Service\BaseService;
use Codeages\Biz\Framework\Service\Exception\InvalidArgumentException;
use Codeages\Biz\Framework\Service\Exception\ServiceException;
use Codeages\Biz\Framework\Util\ArrayToolkit;
use Codeages\Biz\Framework\Util\Lock;
use Codeages\Biz\Framework\Util\TimeMachine;
use Cron\CronExpression;
class SchedulerServiceImpl extends BaseService implements SchedulerService
{
const EXECUTING = 'executing';
public function register($job)
{
if (empty($job['expression'])) {
throw new InvalidArgumentException('expression is empty.');
}
if (empty($job['name'])) {
throw new InvalidArgumentException('name is empty.');
}
if (empty($job['class'])) {
throw new InvalidArgumentException('class is empty.');
}
if (is_integer($job['expression'])) {
$job['next_fire_time'] = $job['expression'] - $job['expression'] % 60;
unset($job['expression']);
} else {
if (!CronExpression::isValidExpression($job['expression'])) {
throw new InvalidArgumentException('expression is invalid.');
}
$job['next_fire_time'] = $this->getNextFireTime($job['expression']);
}
$default = array(
'misfire_threshold' => 300,
'misfire_policy' => 'missed',
'priority' => 200,
'source' => 'MAIN',
);
$job = array_merge($default, $job);
$job = $this->getJobDao()->create($job);
$this->dispatch('scheduler.job.created', $job);
$jobFired['job_detail'] = $job;
$this->createJobLog($jobFired, 'created');
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。