鍍金池/ 問答/PHP  Linux  網(wǎng)絡(luò)安全/ nginx下PHP 部分curl和file_get_content得到的數(shù)據(jù)不完

nginx下PHP 部分curl和file_get_content得到的數(shù)據(jù)不完整

本地Apache,用curlfile_get_content爬蟲得到的數(shù)據(jù)都是完整的。部署到nginx服務(wù)器上,不論用curl還是file_get_content,同一頁面有的時候數(shù)據(jù)只能獲取一半,大多時候數(shù)據(jù)是完整的。這是什么原因呢。

回答
編輯回答
做不到

先問下題主,樓上兩位理解你的問題是不是方向錯了,如果他們沒錯,請忽略下面。

如果他們錯了,你的問題是不是可以簡化為 PHP下 curl/file_get_content獲取頁面不完整,php是運(yùn)行在一個用nginx代理或者解析的php-fpm實(shí)例中?

如果是這個意思,請測試回復(fù) 你是固定只能獲得一定長度的內(nèi)容,還是不固定長度?如果是固定長度,這個大小是多少?

2017年10月9日 16:35
編輯回答
舊螢火

嗯 猜測一下默認(rèn)獲取長度在nginx上有限制,或者請求時間收到限制導(dǎo)致獲取的數(shù)據(jù)不完整。還需要進(jìn)行相關(guān)驗(yàn)證。畢竟也沒遇到過這種情況。
剛才下去查了一下 ,Nginx的buffer機(jī)制,對于來自 FastCGI Server 的 Response,Nginx 將其緩沖到內(nèi)存中,然后依次發(fā)送到客戶端瀏覽器。緩沖區(qū)的大小由 fastcgi_buffers 和 fastcgi_buffer_size 兩個值控制。
應(yīng)該就是這個原因。
具體可以參考這個鏈接里面的內(nèi)容nginx buffer

2018年7月11日 15:00