我想在我的项目中使用Laravel队列系统,我想运行php artisan队列:在服务器的后台永久工作,我做了一些搜索,我找到了一个命令行,即使从ssh终端退出后也可以运行它但它可以在某些情况下会失败,可能会给我带来可怕的问题.所以过了一会儿我发现有一个名为Supervisord的软件包,即使服务器重启后也可以重启命令.但不幸的是我的linux知识很低,所以我想请一个人从0到100逐步帮助如何安装Supervisord并在centos 7上配置它,之后设置队列命令行.非常感谢..
我有大约100个GPS设备每10秒定期发送坐标.我的客户想要实时反向地理编码,以便在表格视图中查看他的车辆以及位置.我已经设置了一个队列来保存db中的所有数据包,然后我添加了如下所示的地理编码脚本
使用websocket接收TCP IP消息
public function onMessage(ConnectionInterface $conn, $msg) {
//get the message
// send the dispatch job to save it in db
$this->dispatch(new SavePacketsToDb($key_1, json_encode(
array(
'company_id' => $key_1,
'vehicle_id' => $company->vehicle_id,
'tracker_id' => $company->tracker_id,
'lat' => $lat,
'lng' => $lng,
'imei' => $imei,
'datetime' => $datetime,
)
)));
Run Code Online (Sandbox Code Playgroud)
}
运行队列
public function handle(){
$lat=$obj->lat;
$lng=$obj->lng;
$url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" . $lat . "," . $lng . "&key=mykey";
$json = file_get_contents($url);
$data = json_decode($json);
$status = $data->status;
$address = '';
if …Run Code Online (Sandbox Code Playgroud)我在 AWS 上有一个生产系统并使用 Laravel Forge。有一个正在处理作业的默认队列。
我已经创建了许多作业,现在希望删除它们(因为它们需要很多小时才能完成,而且我意识到我的输入数据很糟糕)。我创建了一个具有良好数据的新作业,但只有在所有其他作业完成后才会对其进行处理。
如何删除所有作业?
redis它之前是使用队列驱动程序设置的。我不知道如何删除作业,因此我将驱动程序切换到database,并重新启动服务器,认为这至少会让作业停止处理。然而,令我沮丧的是,它们仍在继续处理:-(
我什至从 forge ui 中删除了工作程序并重新启动了服务器:作业仍在处理。
为什么作业会继续被处理?
我怎样才能阻止他们?
我要为邮件创建队列作业.一旦我在命令提示符中按下artisan命令,php artisan make:job SendSMSMessages --queued我就会遇到问题.
"--queued"选项不存在.
我正在使用Laravel 5.4
请任何人都可以帮助我.我搜索了很多,但没有找到任何好的解决方案.
谢谢
有人可以在Godaddy共享托管服务器上分享Supervisor队列安装的分步说明吗?我试图搜索和很多,但找不到一个.
我正在开发一个需要从第三方服务器获取数据的应用程序,并且该服务器每秒最多允许 1 个请求。
现在,所有请求都作为作业发送,我正在尝试实施 Laravel 的“速率限制”以每秒发布 1 个作业,但无法弄清楚为什么应该实施它,并且网络中没有实际示例。
有人实施了吗?
这有什么暗示吗?
我正在尝试实现Laravel 5.7的队列作业速率限制,该功能在队列作业达到速率受限的外部API时使用。
这是我的工作:
public function handle() {
echo 'about to check throttling'.PHP_EOL;
Redis::throttle('throttle-test')->allow(10)->every(5)->then(function () {
// this is never executed
echo 'doing work'.PHP_EOL;
}, function () {
// also never executed
echo 'released back onto queue'.PHP_EOL;
return $this->release(10);
});
}
Run Code Online (Sandbox Code Playgroud)
除了“ ...应用程序可以与Redis服务器进行交互”之外,没有提到需要将Redis用于队列,缓存或文档中的任何此类性质。无论哪种方式,这都是我的环境变量:
DB_CONNECTION=mysql
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=redis
Run Code Online (Sandbox Code Playgroud)
我已经确认RedisServiceProvider接收到了正确的预期配置:
array:3 [
"client" => "predis"
"default" => array:4 [
"host" => "redis"
"password" => null
"port" => "6379"
"database" => 0
]
"horizon" => array:5 [
"host" => …Run Code Online (Sandbox Code Playgroud) 我有一个通过 envoyer 部署到非伪造服务器的 laravel 5.4 应用程序。我正在数据库驱动程序上运行队列工作器,使用主管进行监视,如文档中所述进行设置;
command=php /home/data/app/current/artisan queue:work --sleep=3 --tries=3
Run Code Online (Sandbox Code Playgroud)
并使用 envoyer 部署挂钩
cd ~/app/current
php artisan queue:restart
Run Code Online (Sandbox Code Playgroud)
问题是,在每次部署后,队列工作人员没有重新启动,旧的工作人员继续运行,然后抛出错误,因为他们正在处理以前版本的代码。运行队列:从 CLI 手动重启也不起作用。
data@medicone:~/ccpbase/current$ ps -aux | grep queue:work
data 4347 0.0 0.2 292988 34852 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4348 0.0 0.2 292988 34864 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4349 0.0 0.2 292988 34720 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4350 0.0 0.2 292988 34880 ? …Run Code Online (Sandbox Code Playgroud) 我在Laravel项目中遇到了问题,我正在尝试使用FFMPEG 转换大小为450MB 的视频文件,因为这需要很长时间才能在Laravel中使用Queues来执行此操作.
由于我的生产环境的配置,我必须使用数据库队列,问题是每次php artisan queue:work在我的Vagrant框中使用命令时,每次大约60秒后排队的作业被杀死.
Vagrant盒子有4GB Ram可用,支持2D和3D加速,memory_peak_usage()在整个过程中命令永远不会列出20MB以上的任何东西.
我按照预期检查了php_sapi_name()它和它的cli,所以当涉及到执行时间时它应该没有任何限制,不管我去了cli php.ini文件并再次删除任何限制以确定.
尝试重新启动Vagrant,几秒钟之后就被杀死了.
所以我决定尝试为转码过程创建一个Laravel 命令,我硬编码文件路径和东西,并且看到它正在工作而不被杀死 ...
我错过了关于队列的一些事情吗?我正在运行php artisan queue:work我没有指定任何类型的超时,为什么我的队列被杀?
预先感谢您的帮助.
先感谢您
我的问题很简单
例如,我创建了一项向用户发送电子邮件的作业。然而,由于某些语法错误或任何其他异常,它失败了,因此 Laravel 会将此作业视为failed_jobs数据库表中的失败作业,稍后,举个例子,2 天后我在代码中发现了问题并解决了它,现在我想再次重新运行那个失败的作业,以便我的任务可以完成
有什么方法可以做到这一点?
laravel-queue ×10
laravel ×7
php ×5
laravel-5 ×3
laravel-5.4 ×2
laravel-jobs ×2
centos7 ×1
google-maps ×1
laravel-5.3 ×1
laravel-7 ×1
queue ×1
supervisord ×1
vagrant ×1