Я установил Laravel на Centos 6 с пакетом Pheanstalkd:
"laravel/framework": "4.*",
"pda/pheanstalk": "~2.1"
Мой файл конфигурации очереди Laravel:
return array(
'default' => 'beanstalkd',
'connections' => array(
'beanstalkd' => array(
'driver' => 'beanstalkd',
'host' => 'localhost',
'queue' => 'default',
'ttr' => 60,
),
...
),
);
Beanstalked был установлен и запущен, а в Supervisor были настроены следующие параметры:
[program:website]
command=php artisan queue:listen --env=production
process_name=%(program_name)s_%(process_num)02d
priority=999
autorestart=true
directory=/var/www/html/
stdout_logfile=/var/www/html/app/storage/logs/website_supervisord.log
numprocs=5
numprocs_start=5
startsecs=0
autostart=true
redirect_stderr=true
[program:testing]
command=php artisan queue:listen --env=production
process_name=%(program_name)s_%(process_num)02d
priority=999
autorestart=true
directory=/var/www/html/
stdout_logfile=/var/www/html/app/storage/logs/testing_supervisord.log
numprocs=5
numprocs_start=5
startsecs=0
autostart=true
redirect_stderr=true
веб-сайт и группа тестирования добавлены и работают
Очередь «по умолчанию» — это та, которая выполняет мои задания, и мне нужно несколько очередей для работы в приложении (например, мой веб-сайт и программы тестирования, созданные в супервизоре). Я пробовал:
Queue::push('TheBigTest', array('message' => $message), 'website');
но не повезло :(
Для получения более подробной информации рядом с вызовом класс выглядит следующим образом:
<?php
class TheBigTest {
public function fire($job, $data)
{
if ($job->attempts() >= 0){
$job->delete();
}
$nr = 1000;
for ($i=0;$i<=$nr;$i++){
$newDummy = new Dummy;
$newDummy->nr = $i;
$newDummy->other = $i*32;
$newDummy->save();
}
$debug = new Debug;
$test = $job->getPheanstalk()->stats();
$debug->job_execution = $test["rusage-stime"];
$debug->job_time = $test["rusage-utime"];
$debug->pid = $test["pid"];
$debug->uptime = $test["uptime"];
$debug->job_id = $test["id"];
$debug->max_job_size = $test["max-job-size"];
$debug->current_tubes = $test["current-tubes"];
$debug->current_connections = $test["current-connections"];
$debug->current_workers = $test["current-workers"];
$debug->current_waiting = $test["current-waiting"];
$debug->total_connections = $test["total-connections"];
$debug->total_jobs = $test["total-jobs"];
$debug->job_timeouts = $test["job-timeouts"];
$debug->debug = json_encode($job->getPheanstalk()->listTubeUsed());
$debug->save();
}
}
Другая конфигурация, кроме этой, не выполнялась, и я не знаю, как работать с другими очередями.