PHPで作成した大容量ZIPファイルをnginxでダウンロードする設定

バジル
2020-03-31
バジル
2020-03-31

大容量ZIPのダウンロードができない

AWSのS3上にアップロードされたファイルをまとめてZIPにし、
それをダウンロードする機能を開発したのですが、
100Mを超えるファイルをダウンロードしようとすると
エラーページに遷移してしまう問題が発生しました。

何が問題だったか

・ZIPファイルを作成するところでメモリが足りていない
・ZIPファイルを作成するところで処理に時間がかかりすぎてタイムアウトしている

解決策

php.iniでメモリ不足を解消(サーバーのメモリが十分あることが前提)
php.iniでタイムアウト時間の延長
```
memory_limit = 256M
max_execution_time = 600
```
続いてnginx.confのタイムアウトを延長
```
fastcgi_read_timeout 1200;
```

これでも治らない場合

そもそもサーバーのスペックは大丈夫でしょうか。
かくいう私もAWSのEC2において、t3.microを使っていたので
メモリリミットをあげても、そもそもメモリが物理的に足りてないよ!
という状態でした。
t3.smallに変えてたらサクっとなおりました。

以上です!