2017-09-20 42 views
0

我有一個JSON JSON文件就像值找出爲什麼fopen()過早結束?

{...} {...}... 

我可以通過[]包裹,並添加大括號之間的逗號將其轉換爲JSON,但是這不是問題。

我在文件中有大約40000個這樣的對象,我需要導入到WordPress中。現在,使用wp_remote_get()是不可能的,因爲該文件太大,我得到錯誤(用盡內存),所以我用fopen()。我有執行當我點擊導入,並在其中,我有這樣的代碼AJAX功能:

$data = fopen('url-to-local-file', 'r'); 

while (! feof($data)) { 
    $json_line = fgets($data); 
    $json_array = json_decode($json_line, true); 

    // Import happens here 
} 

fclose($data); 

這工作,有點。大約12000個條目後,我收到消息,一切進口都很好。現在,應該導入的帖子數量大約爲3000(具有不同元值的相同條目),但我只能獲得大約900個導入。沒有圖像下載,只需從數組中獲取數據並將其放在wp_insert_post()的帖子中,然後進行一些元數據更新。

有什麼辦法可以看到爲什麼6分鐘後流停止?錯誤日誌是空的。我看到一些使用trycatch的代碼,但我不知道我應該把它放在哪裏(以前從未使用它)。

+0

您是否嘗試過'set_time_limit(0);'並確認您的主機沒有爲所有PHP進程設置6分鐘的最大執行時間? –

+0

我在我的流浪者身上進行本地測試,在哪裏設置時間限制?在文件的頂部或'while'循環中? –

+0

添加了答案。讓我知道如果有幫助 –

回答

0

添加

set_time_limit(0);

到代碼的頂部剛剛開幕PHP標籤之後。

這將允許腳本無限期地運行並且不超時。

+0

添加它,但它仍然導入omly 900帖子沒有錯誤 –