カスタムロングランニングPHPプログラムを何度も呼び出す最善の方法

magento.stackexchange https://magento.stackexchange.com/questions/11273

  •  16-10-2019
  •  | 
  •  

質問

ループで何度も呼び出すPHP CLIプログラムを書きました。各ループは、データがなくなるまで一度に一度の行数を処理します。

これは、MagentoとDrop Shipperの間の中央の部分であるカスタムレストプログラムです。

各実行には最大25分かかる場合があり、最大400回のランがある場合があります。

1つのPHPプログラムでプロセスがあったとき、タイムアウトとメモリの問題に遭遇しました。

そのため、データがなくなるまで何度もPHPプログラムを必要に応じて呼び出すBASHスクリプトがあります。メソッドは機能します。

私は、Bash Shellプログラムを使用してMagentoの基準に従っていないことを心配しています。

Magento Cronシステムは、PHP呼び出しのみをサポートしており、Bashコールではないようです。そのため、OS Cronを使用する必要があります。

プログラムを何度も実行するためのより良い方法はありますか?

第二に、管理者内からバッシュウィンドウを開く方法はありますか?

役に立ちましたか?

解決

非常に長い間実行されるスクリプトを扱うとき、PHPでは実際にはPHPの設計されていません。私は、メモリの問題に遭遇することなく、一方の端で数時間実行できるソフトウェアに遭遇していません。

1つのPHPプログラムでプロセスがあったとき、タイムアウトとメモリの問題に遭遇しました。これらは、すべての開発者が最初の長期にわたるスクリプトを作成しているときに実行される問題です。その中で恥はありません。

非常に長く実行されるツールは、通常、それらが多くのオブジェクトを生成せず(それらを再利用する)、各ループに新しい変数を作成しないことを確認します。これらのプログラムは通常、最も重要な要件の1つとしてメモリ要件を使用して開発されます。これは簡単ではありません。メモリの要件が低いことで開発することは、すべてをメモリ内で行うことや、すべてを繰り返すよりもはるかに困難です。

Bashを使用するというあなたのソリューションは問題ありません。それが機能し、毎週複数のサーバーにインストールを展開する必要がない場合、この方法でそれを行うことに害はありません。

Magento's Cronは、各サーバーで実際にCronをセットアップすることなくCronジョブを定義できるシステムです。MagentoのXML構成で定義するだけです(モジュールを配布する場合、これは非常に便利です)。開発に優しいですが、すべてのソリューション(あなたのような)に適合するわけではありません。

そうは言っても、スクリプトが25分間実行された場合、おそらく変更を加えたり、さらに開発したりすることなどがあります。機能を追加するときの開発反復は非常に長く、実際のスクリプトの改善が非常に困難になります。あなたがこれを理解していることを確認してください、私はこれによって何度も火傷を負っています。

第二に、管理者内からバッシュウィンドウを開く方法はありますか?いいえ、それは潜在的なセキュリティの問題です。

Magentoバックエンドからスクリプトを開始したい場合は、Bashスクリプトとまったく同じことを行うMagento Cronのジョブを構築できます。そこからシェルスクリプトを実行することもできます(http://php.net/manual/en/function.shell-exec.php)。このようにして、あなたはのようなもので仕事をスケジュールすることができます https://github.com/fbrnc/aoe_scheduler.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top