Files
tougao/application/api/job/FetchExperts.php
2026-03-13 17:19:34 +08:00

52 lines
1.6 KiB
PHP

<?php
namespace app\api\job;
use think\queue\Job;
use app\common\ExpertFinderService;
/**
* 专家抓取队列任务
* 注意:此任务推送到队列名 "FetchExperts",必须单独启动 worker 才会执行:
* php think queue:listen --queue FetchExperts
* 若只运行 queue:listen 不指定队列,默认只消费 "mail",本任务不会被执行。
*/
class FetchExperts
{
public function fire(Job $job, $data)
{
$field = isset($data['field']) ? $data['field'] : '';
// $attempts = $job->attempts();
//
$service = new ExpertFinderService();
// $service->log('[FetchExperts] start field=' . $field . ' attempts=' . $attempts);
//
// try {
$result = $service->doFetchForField(
$field,
isset($data['source']) ? $data['source'] : 'pubmed',
isset($data['per_page']) ? intval($data['per_page']) : 100,
isset($data['min_year']) ? $data['min_year'] : null
);
// $service->log('[FetchExperts] completed field=' . $field . ' result=' . json_encode($result));
// } catch (\Throwable $e) {
// $service->log(
// '[FetchExperts] failed field=' . $field .
// ' msg=' . $e->getMessage() .
// ' file=' . $e->getFile() .
// ' line=' . $e->getLine()
// );
//
// if ($attempts >= 3) {
// $job->delete();
// return;
// }
//
// $job->release(60);
// return;
// }
$job->delete();
}
}