Laravel snappyで exceeded the timeout

投稿者: | 2021年1月26日

LaravelでPDFを作成するときはSnappyというパッケージを利用しているのですが、大量のPDFを一度に作ろうとしたところ、次のエラーが表示されました。

「exceeded the timeout of 60 seconds」は60秒のタイムアウトを超えたということですが、それならその60秒の設定をどこで行っているかといいますと、config/snappy.phpです。
下記のようにtimoutのところを3600秒まで実行されるように修正します。

    'pdf' => array(
        'enabled' => true,
        'binary'  => '/usr/local/bin/wkhtmltopdf',
        'timeout' => 3600,   // デフォルトでは「false」となっています
        'options' => array(),
        'env'     => array(),
    ),
    'image' => array(
        'enabled' => true,
        'binary'  => '/usr/local/bin/wkhtmltoimage',
        'timeout' => 3600,   // デフォルトでは「false」となっています
        'options' => array(),
        'env'     => array(),
    ),

これでエラーは発生せずに、最後まで出力されるようになりました。
この設定を行っても解決しない場合は、php.ini内の max_execution_time や max_input_time なども確認してみてください。