我已经检查了有关此问题的多个答案,但似乎没有适当的解决方案。我正在解雇一份工作,它在模式下运行良好,但在驱动程序sync
中根本不工作。database
队列.php
'default' => env('QUEUE_CONNECTION', 'sync'),
.env
QUEUE_DRIVER=database
我是如何解雇这份工作的。我尝试删除onConnection('database')
,但它会在sync
驱动程序上运行
SendNotifications::dispatch(array("message" => "test"))->onConnection('database');
我正在执行以下命令来监听
php artisan queue:work database
当我解雇这份工作时,它会被写入jobs
表格,几秒钟后,它会变成processed
. 问题是:它没有开火。如果我删除onConnection('database')
它,它可以在sync
没有任何问题的模式下工作。
class SendNotifications implements ShouldQueue {
public function __construct(){
}
public function handle(){
// here i'm connecting to a notifications api
}
}
里面的例子handle()
if($this->event_name === "example"){
$room = $this->getRoomByID($example_id_variable); // database_call
if(empty($room) === true) {
return;
}
$notify_receivers = getBlabla(); //get the receivers from the database (complex query)
if(empty($notify_receivers) === false){
foreach($notify_receivers as $receiver){
$this->sendMessageAPI($receiver, $this->payload);
}
}
}
发送消息API
public function sendMessageAPI($id, $payload) {
$curl = curl_init();
$post_fields = array(
"key" => "key",
"secret" => "secret",
"channelId" => $id,
"message" => $payload
);
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.piesocket.com/api/publish",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($post_fields),
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
}
我正在使用 xampp 在本地主机上运行它。任何想法为什么它实际上没有发射?我检查了payload
数据库表中的列jobs
,它是正确的。