我在使用GuzzleHttp\Stream\Stream
類的PHP中使用流。雖然使用它我得到PHP內存分配問題。有沒有一種方法可以使用,但不會佔用太多內存?通過PHP使用流時的內存分配問題
問題
當我需要服務的0-381855148字節的內容範圍(例如)這引起了我的內存分配問題。有沒有一種方法可以在不需要那麼多內存的情況下提供內容?有些東西直接傳遞數據,而不是將其保留在內存中?
這是我的代碼導致錯誤的部分...
$stream = GuzzleHttp\Stream\Stream::factory(fopen($path, 'r'));
$stream->seek($offset);
while (!$stream->eof()) {
echo $stream->read($length);
}
$stream->close();
這爲我流的回調函數傳遞。
背景
首先,我試圖通過我的流提供最大塊長度固定的問題。我通過給我的流最大偏移量做到了這一點。它修復了內存分配問題,但在分發我的動態視頻內容時,Firefox中出現了新問題。 Chrome瀏覽器沒有問題。
這是因爲Firefox要求「0-」內容範圍,但我給了內容範圍「0-」。相反,我需要返回整個範圍(直到最大),但這會導致臭名昭着的「允許262144字節的內存大小耗盡(試圖分配576字節)」錯誤。
免責聲明:這實際上是一個更多的技術。但我想保持簡單。
有人知道解決方案嗎? 謝謝。
您收到錯誤消息或? –
允許內存大小爲262144字節耗盡(試圖分配576字節)是我得到的錯誤 – sparkle