Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@ooharabucyou

Composer の "scripts" 単位で Timeout の無効化が設定できるようになって便利

More than 1 year has passed since last update.

2019年8月3日に、Composer1.9がリリースされていて、その中で Composer\Config::disableProcessTimeout ヘルパが便利そうであった。

Composer のコマンドの実行タイムアウトは通常 300秒

Composer では、通常コマンドのタイムアウトが300秒に設定されている。
このため、scripts に、開発用サーバ起動コマンドなどを設定しようものなら、5分で強制終了されてしまう。

scripts によるスクリプトの定義は、以下などを参照されたし

composer.json
{
    "scripts": {
        "server": "php -S localhost:8080 -t public/"
    }
}
$ composer server
> php -S localhost:8080 -t public/

-> 5分後、サーバが勝手に止まります。悲しい。

タイムアウト無効化・変更する技 (1.8以前)

以下の設定を0秒にすることで、無効化できます。下に行くほど優先度が高い (設定が上書きされる) です。

  • composer 設定の、process-timeout を設定する。
    • composer config process-timeout 0 にとすることで、composer.json にタイムアウトが無効化される設定が書き出される。ただし、当該プロジェクト全体で適用されてしまうので、都合が悪い場合があるし、ドキュメント等でその方法を示す必要がある。
  • COMPOSER_PROCESS_TIMEOUT 環境変数を設定する。
    • COMPOSER_PROCESS_TIMEOUT=0 composer server で起動することで、当該コマンドに限りタイムアウト設定を無効化できる。ドキュメント等でその方法を示す必要がある。
  • run-script--timeout オプションを設定する。
    • composer run-script --timeout 0 server で起動することで、当該コマンドに限りタイムアウト設定を無効化することができる。ドキュメント等でその方法を示す必要がある。

と、すべてドキュメント等に記載しないとワークしない方法の数々です。スクリプトの共有を楽にするはずが、これではよくありません。

Composer\Config::disableProcessTimeout ヘルパによる無効化

そこで、登場したヘルパはスクリプトとして記載することで、そのスクリプトに限りタイムアウト設定を無効化することができるスグレモノです。
このヘルパは、上記の設定等中で最優先されます。

composer.json
{
    "scripts": {
        "server": [
            "Composer\\Config::disableProcessTimeout",
            "php -S localhost:8080 -t public/"
        ]
    }
}
$ composer server
> Composer\Config::disableProcessTimeout
> php -S localhost:8080 -t public/

→ タイムアウトしなーい。

もちろん、Composer1.8以前だと以下のようなエラーが出るので、このエラーが出る場合は compser self-update を忘れずに。 (1敗)

Method Composer\Config::disableProcessTimeout is not callable, can not call server script

参考資料

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ooharabucyou
地球に住んでいます。
codeal
即戦力複業ならコデアル。高収入×リモートワークの複業・フリーランス・転職求人多数

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?