2016-11-29 5 views
0

curlを使用して別のWebサイトから大きなデータを取得するスクリプトがあります。Magento 2 - 500内部サーバーエラー

しかし、しばらくしてから、500台の内部サーバーエラーが発生しました。 スクリプトに何も問題はありませんが、大量のデータは一度に取得されません。

私も

以下のPHPのbin/Magentoのジェットのようなコンソールコマンドを作成しました:sync_categories

とそれに必要なファイルを作成しました。

しかし、ユーザーの観点からは実現不可能です。

これに代わる方法は何ですか?

答えて

0

shell_exec( 'php your-shell-file &')を使用する必要があります。バックグラウンドでスクリプトを処理するには、最後のパラメータとして "&"を使用します。

0

500内部サーバーエラーの場合。その通常はサーバー側のエラーです。ローカルで作業している場合は、Apacheのphp.iniに移動し、max_execution_time = 30を最大時間枠に変更します(max_execution_time = 300(秒))。あなたが外部者に行くのであれば、時間がかかります。特に、大きなデータを送信する場合は時間がかかります。

memory_limit=2G 
    max_execution_time=300 
    post_max_size=8M 

よう

問題が解決しない場合は、変更する他の重要な値は、それが動作願っています。

+0

ありがとうございます。 私は拡張機能を作成していますので、すべてのユーザーにこのサーバー構成を設定するように通知することは不可能です。コーディング自体で管理できる解決策がありますか? – Nitz

+0

私はあなたが何をしているかを理解していると思います。あなたがデータベースの中に入るときは少しコードをきれいにしてください。 Magentoでよく見られる大きな問題は、プログラマーが各SKUのデータベースに入るループを作成することです。 500 SKUを所有している場合、処理に必要なすべてのリソースを想像してみてください。例えば。データベース内でSELECTを実行する必要がある場合、foreach($ sku as $ sku)のようなループを実行する代わりに、SELECT * FROM table WHERE sku = "$ sku" endforeach。 -----> IN節を使用してクエリを構築します。同様に---> SELECT * FROMテーブルWHERE sku IN $ skus。これらの変更は本当に重要です。 –

+0

APIを使用しているため、データベースにアクセスできない場合。 timeoutプロパティを30秒未満に設定します。これは通常、通常のサーバーのタイムアウトになります。 –

関連する問題