質問: fopen($url, 'rb', false, $this->_context); restore_error_handler(); if (!$this->_stream || !empty($this->_connectionErrors)) { throw new Exception(implode("\n", $this->_connectionErrors)); } } ``` エラー内容: fopen(): send of 8192 bytes failed with errno=11 Resource temporarily unavailable ※POSTデータを少なくすると、上手くいくことは確認しました。 送信データを少なくするしか方法はないのでしょうか。 どなたか解決策をご存知の方がいらっしゃいましたら、お教え願います。 環境は、 php 7.0.15 nginx です。
回答: こちらが参考になるかもしれません。 ファイル入出力の基本 (IO モデル) を勉強する 端末が一度に受け取ることができるバイト数が決まっているので, 端末のバッファがいっぱいになった時点からそれを書きだしてフラッシュするまでの間, errno = 11 が read に返されているという状況です。 おそらくどこかで、 int bufsize = 8192; のような設定が行われている可能性があるので調べてみてはいかがでしょうか? ※気になるので私も調べてみよう... こんな情報を発見しました。 通信量が増えてきた所でResource temporarily unavailableということでリソース不足で怒られるようになった。 ># sysctl net.core.somaxconn >net.core.somaxconn = 128 128??? すくなっ!? nginxで2048を受けること考えると倍くらいでも良いのかもしれないけど、大きめに設定。この値はnet.core.somaxconnより大きかった場合、net.core.somaxconnの値を優先するようです。