Я хочу использовать php_resque (https://github.com/chrisboulton/php-resque) для моего проекта codeigniter.
Это функция «тест» для создания новой работы.
public function test() {
$this->load->library('My_Job');
Resque::setBackend('localhost:6379');
$args = array(
'name' => 'Chris'
);
$token = Resque::enqueue('default', 'My_Job', $args, true);
$status = new Resque_Job_Status($token);
Resque::dequeue('default', ['My_Job' => $token]);
}
И это код рабочей библиотеки
putenv("VVERBOSE=1");
putenv("LOGGING=1");
putenv("QUEUE=*");
class My_Job {
public function perform($args) {
$this->load->model('M_sms');
$this->M_sms->ins_msg();
}
}
когда я вызываю ‘test’ (localhost / project_folder / controller / test), функция ‘execute’ в работнике (My_Job.php) не загружается. И статус работы 1. Что здесь не так?
когда я использовал следующий код для отладки
VERBOSE=1 QUEUE=default php resque.php
он говорит, что не может найти работу класса
В моем коде проблема в том, что работник не знает, где находится класс работы. Как я уже упоминал выше, я получаю статус 1 (STATUS_WAITING), что означает «Работа все еще в очереди». Это произошло со мной, потому что я пытался загрузить класс задания как библиотеку в своем проекте codeigniter.
$this->load->library('My_Job');
Теперь я изменил свой код в соответствии с этим руководством Программа Veryday
В этом уроке объясняется пошаговая процедура настройки PHP-спасательное
Вы должны включить автозагрузчик приложения:
QUEUE=* VVERBOSE=1 REDIS_BACKEND=localhost:9999 APP_INCLUDE=./path/to/loader.php php resque.php
http://kamisama.me/2012/10/12/background-jobs-with-php-and-resque-part-4-managing-worker/