Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Использую последний ларавель.
Создал джобу на отправку POST запроса на внешний ресурс
public function handle()
{
$this->client->request('POST', 'https://.....', [
'body' => $this->body, 'synchronous' => true
]);
}
public function __construct($headers, $body)
{
$this->body = $body;
$this->client = new GuzzleClient([
'headers' => $headers
]);
}
Настроил очереди и БД:
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sitech
DB_USERNAME=sitech
DB_PASSWORD=sitech
database.php
'default' => env('DB_CONNECTION', 'mysql'),
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
],
queue.php
'default' => env('QUEUE_DRIVER', 'database'),
'connections' => [
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
],
],
Выполнил миграции для очередей
В контроллере вызываю:
dispatch(new CreateIssue($headers, $body));
Что интересно, dispatch находится в цикле. После первого выполнения dispatch следующая итерация цикла не начинается. Если dispatch закомментировать цикл выполняется.
Что здесь не так?
Не в сети
А в .env у тебя упоминается QUEUE_DRIVER ?
Миграции выполнил (если драйвер для базы) ?
Изменено artoodetoo (17.01.2020 16:18:30)
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
А в .env у тебя упоминается QUEUE_DRIVER ?
Да, там тоже: QUEUE_DRIVER=database
Миграции выполнил (если драйвер для базы) ?
Миграции выполнил, обе таблицы есть: jobs и failed_jobs.
Кстати, логи тоже пустые (storage\logs). Хотя отладка в .env включена.
Не в сети
@artoodetoo ,
Кстати, если так:
dd("111");
dispatch(new CreateIssue($headers, $body));
То я получаю вывод на экран 111
А если так:
dispatch(new CreateIssue($headers, $body));
dd("222");
то не получаю.
На всякий случай приведу весь код контроллера:
class MainController extends Controller
{
public function index(Request $request){
$url = $request->request->get('url');
if (!empty($url)) {
$doc = hQuery::fromUrl($url,
['user-agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36']
);
try {
$errors = $doc->find('#results > ol > li');
if ( $errors ) {
foreach($errors as $error) {
$text = $error->find('span')[0]->text;
$iBody = ([
"summary" => $text,
'custom_fields' => '',
'tags' => '',
]);
$body = json_encode($iBody);
$headers = [
'Authorization' => '1111111111111111111111111111111',
'Content-Type' => 'application/json',
];
dispatch(new CreateIssue($headers, $body));
}
}
} catch (\Exception $e) {
}
}
return dd('Empty URL');
}
}
Не в сети
Ошибку нашел. Не правильно передавал параметры в конструктор. Все заработало.
Не в сети
Страницы 1