очередь yii не обнаруживает задания в базе данных - PullRequest
1 голос
/ 23 мая 2019

Я пытаюсь запустить очередь, используя yii, чтобы я мог выполнить некоторые тесты, но всякий раз, когда я набираю команду yii queue / run, кажется, что никакая работа не помещается в ожидание,

Для отправки информации об идентификаторе и статусе задания, которое при выполнении условий будет запущено на главной странице

Это код, который отправляет данные в очередь:

class HorarioController extends Controller
{
public function actionBuscar()
{
    $hora = date("H").":00".":00";
    $dia = date("N");
 $horarios = Horarios_Equipos::find()->all();

    foreach($horarios as $horario)
    {

        echo $horario->id_equipo."\n";
        echo $horario->estado."\n";
        //enviar a cola

        Yii::$app->queue->push(
            new HorarioJob([
                'id_equipo' => $horario->id_equipo,
                'estado' => $horario->estado,                   
            ])
        );
    }

    return ExitCode::OK;
}

}

А это код, который выполняет действие в очереди

public function execute($queue)
 {

if($estado == '1'){
    if($pin == 1)
   {
    $equipo = Equipos::find()->where(['id'=>$id])->one();
    $equipo->estado = '1';
    $equipo->save ();

    $curl = new curl\Curl();

    $response = $curl->get($equipo->ip.'/gpio/LEDa=ON');

    return $this->redirect(['view', 'id' => $id]);
}
    elseif ($pin == 2)
{
    $equipo = Equipos::find()->where(['id'=>$id])->one();
    $equipo->estado = '1';
    $equipo->save ();

    $curl = new curl\Curl();

    $response = $curl->get($equipo->ip.'/gpio/LEDb=ON');

    return $this->redirect(['view', 'id' => $id]);
}

    elseif ($pin == 3)
{
    $equipo = Equipos::find()->where(['id'=>$id])->one();
    $equipo->estado = '1';
    $equipo->save ();

    $curl = new curl\Curl();

    $response = $curl->get($equipo->ip.'/gpio/LEDc=ON');

    return $this->redirect(['view', 'id' => $id]);
}
    elseif ($pin == 4)
{
    $equipo = Equipos::find()->where(['id'=>$id])->one();
    $equipo->estado = '1';
    $equipo->save ();

    $curl = new curl\Curl();

    $response = $curl->get($equipo->ip.'/gpio/LEDd=ON');

    return $this->redirect(['view', 'id' => $id]);
}



    }       

if ($estado == 0){

    if ($pin == '1')
    {
    $equipo = Equipos::find()->where(['id'=>$id])->one();
    $equipo->estado = '0';
    $equipo->save ();

    $curl = new curl\Curl();

    $response = $curl->get($equipo->ip.'/gpio/LEDa=OFF');

    return $this->redirect(['view', 'id' => $id]);
}

    if ($pin == '2')
{
    $equipo = Equipos::find()->where(['id'=>$id])->one();
    $equipo->estado = '0';
    $equipo->save ();

    $curl = new curl\Curl();

    $response = $curl->get($equipo->ip.'/gpio/LEDb=OFF');

    return $this->redirect(['view', 'id' => $id]);
}

    if ($pin == '3')
{
    $equipo = Equipos::find()->where(['id'=>$id])->one();
    $equipo->estado = '0';
    $equipo->save ();

    $curl = new curl\Curl();

    $response = $curl->get($equipo->ip.'/gpio/LEDc=OFF');

    return $this->redirect(['view', 'id' => $id]);
}

    if ($pin == '4')
{
    $equipo = Equipos::find()->where(['id'=>$id])->one();
    $equipo->estado = '0';
    $equipo->save ();

    $curl = new curl\Curl();

    $response = $curl->get($equipo->ip.'/gpio/LEDd=OFF');

    return $this->redirect(['view', 'id' => $id]);
}

    }


}
}

Это то, что показывает, когда я запускаю очередь / запуск yii:

C:\xampp\htdocs\accontrol>yii queue/run

C:\xampp\htdocs\accontrol>

И если я запускаю yii queue / info, это показывает только следующее:

C:\xampp\htdocs\accontrol>yii queue/info
Jobs
- waiting: 0
- delayed: 0
- reserved: 0
- done: 0

Насколько я знаю, файлы, в которых написаны функции очереди, правильные, и я должен иметь возможность выполнить команду queue / run, по крайней мере, получить сообщение об ошибке, чтобы увидеть, где я ошибаюсь, но это не так

1 Ответ

0 голосов
/ 22 июня 2019

Обнаружена проблема: PHP неправильно настроил часовой пояс, поэтому, когда он пытался найти время в базе данных, которое не совпадало с настроенным временем, пришлось изменить документ php.ini, чтобы установить правильный часовой пояс. , Если у вас возникла эта проблема при вводе документа php.ini, вы можете сделать это через панель управления: в разделе Apache нажмите кнопку конфигурации и выберите PHP (php.ini). Затем используйте опцию поиска и найдите часовой пояс, а затем вы можете ввести часовой пояс вашего региона, в моем случае это America / Mexico_City Вот ссылка, где вы можете найти часовые пояса: https://www.php.net/manual/es/timezones.php

...