Я использую работу Laravel, которая обрабатывает определенные подтверждения регистрации по почте.
В функции handle()
работы я ссылаюсь на статическую функцию другого класса (TicketController
), которая генерирует PDF:
public function handle()
{
$this->ticket = TicketController::createPdf($this->customer);
Mail::to($this->customer->email)->send(new CustomerAccepted($this->customer, $this->ticket));
}
Если я запускаю это задание через драйвер sync
, все работает нормально.Но с database
я всегда получаю ошибку
class 'PDFlib' not found
Конечно, класс реализован в моем TicketController
, и я также пытался реализовать его непосредственно в своем классе работы.
Я также несколько раз пытался перезапустить работника очереди, но всегда получал один и тот же результат при работе с database
.
РЕДАКТИРОВАТЬ:
TicketController.php
:
use App\Customer;
use PDFlib;
class TicketController extends Controller
{
public function createPdf(Customer $customer)
{
$p = new PDFlib();
$p->set_option("errorpolicy=return");
$p->set_option("stringformat=utf8");
$p->set_option("searchpath={" . resource_path() . "assets/fonts" . "}");
$p->set_option("spotcolorlookup=false");
if ($p->begin_document(storage_path('app/xy.pdf'), "") == 0) {
echo ("Error: " . $p->get_errmsg());
exit(1);
}
// Loading template and filling with content
$p->end_page_ext("");
$p->end_document("");
return storage_path('app/xy.pdf');
}
}
EDIT # 2
Я добавил полную функцию PDFlib
непосредственно к handle()
задания, но все еще получаю ту же ошибку class 'PDFlib' not found
.
EDIT # 3
Только что понял, что запуск драйвера database
локально и прослушивание очередей с php artisan queue:listen
работает отлично.
Я запускаю приложение на Laravel Forge и также database
драйвер.Попытался настроить очередь с работником демона и без него, но ни один из них не работает.