Php 在laravel中一次性发布所有计划任务
我在数据库中有一个特定时间的预定帖子列表。我使用crontab调用该函数,并使用foreach循环执行所有操作 我的问题是假设同一用户上午10:00同时发布了10篇文章,现在crontab将触发事件并调用函数,这里我获取所有10篇文章并将其传递给foreach循环 现在,当最后10个帖子完成时,时间将是上午10:10,完成一个帖子需要1分钟或更少的时间。现在用户会想,为什么一篇原定于上午10点发布的帖子会在上午10点发布 我希望所有的帖子都能同时发布,请给我一些解决方案,我知道我需要使用多线程的概念。我需要帮助 这是我的代码,我是怎么做的 在crontab下面我有这个Php 在laravel中一次性发布所有计划任务,php,laravel,pthreads,scheduled-tasks,scheduling,Php,Laravel,Pthreads,Scheduled Tasks,Scheduling,我在数据库中有一个特定时间的预定帖子列表。我使用crontab调用该函数,并使用foreach循环执行所有操作 我的问题是假设同一用户上午10:00同时发布了10篇文章,现在crontab将触发事件并调用函数,这里我获取所有10篇文章并将其传递给foreach循环 现在,当最后10个帖子完成时,时间将是上午10:10,完成一个帖子需要1分钟或更少的时间。现在用户会想,为什么一篇原定于上午10点发布的帖子会在上午10点发布 我希望所有的帖子都能同时发布,请给我一些解决方案,我知道我需要使用多线程的
***cd/var/www/html&&php artisan schedule:run>/dev/null 2>&1
在内核下我有这个
{
$schedule->command('schedule:post')->everyMinute();
}
在Console->Commands->SchedulePost.php文件下
public function handle(PostService $service)
{
$curent_time = Carbon::now();
$posts = ScheduledPosts::where('status',2)->where('actual_post_time',date('Y-m-d H:i'))->get();
foreach ($posts as $key => $post) {
// here am calling post service which will actually do post
$post_done = $service->post($user, $newpost->message,$newpost->id);
}
}
您是否通过以下代码插入任何内容$post_done=$service->post($user,$newpost->message,$newpost->id)@KaushikThakkar,是的,发布后保存到数据库中。您尝试过批量插入吗?我想这对你有用。