2017-03-02 6 views
0

perlperl通常のデータベースクエリを実行するスクリプトを呼び出すスクリプトがあります。perlスクリプトのパフォーマンスが間違っている他のスクリプトを呼び出すとき

しかし、内部スクリプト呼び出しが頻繁に行われると、データベースに適切な値が挿入されない場合があります。デバッグでは、新しい計算値を挿入する前にデータベースからすべてのレコードをフェッチできませんでした。

私はsystem()子スクリプトを呼び出すメソッドを使用しました。子プロセスが終了するまで待機しますが、子プロセスが頻繁に実行されている間に不正行為が発生する可能性があります。通常のシナリオでは、メインスクリプトは30秒間保持され、子スクリプトが適切に実行されます。

誰でも私のコードやこの種の問題の解決策をデバッグするための提案があります。

+0

操作の結果はの詳細に依存つまり、競合状態のだろう各プロセスまたはスレッドのスケジューリングコードを見なければ、これは診断することは不可能です。あなたのシフトキーは壊れているようです... – Jens

+0

必要に応じて大文字を使用してください。それはあなたの質問を読むのをはるかに容易にします。 – Borodin

答えて

1

DB挿入ごとにPerlスクリプトを実行することは非常に効果的です。

Perlは、(呼び出されるたびに)呼び出されたスクリプトを最初にコンパイルすることに気づくべきです。

OOPを使用してDB処理コードを別のクラスに入れるほうが、実行時にコンパイルされるのが一度だけです。あるいは、モジュールを使用してDBコードを関数に入れることもできます。コンパイルされるのは1回だけです。 "use"プラグマを見てください。例えば

:モジュールを搭載したシンプルなプログラムの開発

main_file.pl

use strict; 
use DB_code; 
DB_code::insert($data); 

DB_code.pm

package DB_code; 
use strict; 

sub insert { 
    my $data = shift; 
    print "Your data has been inserted!"; 
} 

1; 
関連する問題