我有一個腳本,使用curl從另一個網站獲取大量數據。Magento 2 - 500內部服務器錯誤
但一段時間後,我得到500內部服務器錯誤。 腳本沒有錯,但大數據一次不會被抓取。
我創建控制檯命令也喜歡下面
PHP斌/ Magento的噴氣:sync_categories
,創造必要的文件吧。
但是從用戶的角度來看它不可行。
有什麼可以替代呢?
我有一個腳本,使用curl從另一個網站獲取大量數據。Magento 2 - 500內部服務器錯誤
但一段時間後,我得到500內部服務器錯誤。 腳本沒有錯,但大數據一次不會被抓取。
我創建控制檯命令也喜歡下面
PHP斌/ Magento的噴氣:sync_categories
,創造必要的文件吧。
但是從用戶的角度來看它不可行。
有什麼可以替代呢?
爲了更好的解決方案,你必須使用shell_exec('php your-shell-file &');使用「&」作爲後臺處理腳本的最後一個參數。
對於500內部服務器錯誤;它通常是服務器端錯誤。如果您在本地工作,請轉至您的Apache php.ini並將max_execution_time = 30更改爲最大時間範圍,例如max_execution_time = 300(秒)。如果你要去一個局外人,這需要時間,特別是如果你發送大數據。
如果問題仍然存在,然後更改像
memory_limit=2G
max_execution_time=300
post_max_size=8M
其他重要的價值觀希望工程。
謝謝。 我正在創建擴展,所以不可能通知每個用戶設置此服務器配置。是否有任何解決方案可以在自己的代碼中進行管理 – Nitz
我想我正在理解你的工作。當你進入數據庫時清理你的代碼。我通常在Magento中看到的一個大問題是程序員爲每個SKU創建一個循環進入數據庫。想象一下,如果您擁有500個SKU,則所有資源都可以處理。例如。如果您必須在數據庫中執行SELECT操作,而不是執行像foreach這樣的循環($ skus as $ sku):SELECT * FROM table WHERE sku =「$ sku」endforeach。 ----->使用IN子句構建查詢。像--- ---> SELECT * FROM table where sku IN $ skus。這些變化非常重要。 –
如果您無權訪問數據庫,因爲您使用的是API。將timeout屬性設置爲小於30秒,通常這是普通服務器的超時。 –