雑多なブログ

音楽や語学、プログラム関連の話題について書いています

PHP - composer install のメモリ不足を解消する!

composerを実行する際、メモリ不足で落ちる事がある。

使用するライブラリーが多いと発生するような気もするが詳しい原因は不明。実行事にメモリに保持されるデータのサイズが大きくなり、デフォルトのmemory_limitの設定を大幅に超過してしまうようだ。

memory_limitを設定する方法としては3つあるので、
状況によって都合の良いやり方で対応すれば良い。

composerの環境変数として指定

COMPOSER_MEMORY_LIMIT=-1 composer install

phpの実行時にmemory_limitを指定(下記例は無制限)

php -d memory_limit=-1 composer install

php.iniでmemory_limitを指定(非推奨)

OS全体に影響があるため非推奨。

memory_limit = -1

上記の・下記のと文章を書く場合に注意する事。

上記・下記の使い方に混乱させられる事があったので、

1. サンプルファイルの置き場所
共有フォルダの "/www/xxx/yyy/zz" です。

2. ツールのセットアップについて
ツールを圧縮したzipファイルを解凍し、exeファイルを実行します。  
それから、プログラムが起動したらメニューの「データ読み込み」を選択してください。      
その後、ファイル読み込み画面が開きますので、そちらでファイルを選択してください。

3. ツールで読み込みを行うファイルについて
上記のサンプルファイルを複製してファイルを作成してください。

3番で「上記の〜」と書いているけれど、 サンプルファイルの情報は1番に書いてある。確かに文章の位置は「上記」である事に間違いはないし、1番にサンプルの情報がある事は推測できるけれど・・・非常に読みづらい。

「上記」という言葉が指し示している文章が離れた場所にあるため、 目線と思考をそこまで移動しなければいけないからだ。 そのため、上記・下記と指し示す場合は、直前・直後に情報を持ってくるのが親切な文章となる。

と言う事で、自分自身の練習も兼ねて。

正規表現のメタ文字学習

正規表現のメタ文字で最近覚えたパターンが便利だったのでメモ。
これだけでも使いこなせると細かいパターンにマッチさせる事ができそう。

メタ文字 説明
(?<!...)... 先行する文字列が、式と一致しない場合にマッチする。
(?<=...)... 先行する文字列が、式と一致する場合にマッチする。
...(?=...) 後ろに続く文字列が式と一致する場合にマッチする。
...(?!...) 後ろに続く文字が式と一致しない文字にマッチする。
...(?:...) 後ろに続く文字が式と一致する文字列にマッチする。式も含めて全体がマッチ結果として取得される。

※いずれの場合も、マッチした結果に式は含まれない。

linux: trapコマンド

シグナルを受け取った時に所定のコマンドを実行したい場合に使えるコマンドが trap だ。

書式

trap 実行するコマンド シグナル

使用例

この例自体はあまり意味のないコマンドだけれども例えば、

リモートサーバのログを tail コマンドで出力するような場合に、コマンド終了時に複数サーバへのSSHのプロセスを、trapを使用してkillするといった用途に使う事ができる。

#!/bin/bash

trap 'int_msg' SIGINT

function int_msg() {
  echo "割り込みが発生したぜ"
  exit
}

top