私は何千ものpremade sqlファイルからデータを抽出したいと思っています。私はPHPでMysqliドライバを使用する必要があるスクリプトを持っていますが、それは一度に1つのSQLファイルなので、実際には遅いです。私は、各SQLファイルがロードされる一意の一時データベース名を作成するようにスクリプトを修正しました。データはアーカイブデータベーステーブルに抽出され、tempデータベースはダンプされます。物事をスピードアップするため、以下のようなスクリプト構造の4つのスクリプト、を作成しました。それぞれのforループは独自のPHPファイルに格納されています(以下のコードは、4別のファイル)、彼らはソースファイルフォルダからのファイルの1/4をつかむように設定されています。このすべてが完璧に動作し、スクリプトが実行され、ファイル処理に干渉がゼロになります。問題は、私がパフォーマンスをほとんどゼロにするようだということです。たぶん10秒速い:(私はすぐにPHPmyadminのデータベース一覧ページを更新して、いつでもロードできる4種類のデータベースを見ることができましたが、DB名がオンザフライで変化しているため、私はmysqli/PHPで動作するようにすることはできますか?あるいは他のオプションを調べる必要はありますか?これをやりたいですか? (バージョン7.0)PHPでスクリプトを実行してテストしましたが、それは問題ですか?コマンドラインでそれらを実行し、それらをバックグラウンドに設定するコードは書かれていません。最後のメモ、私のmysqlデータベースのすべてのユーザーは、接続などに制限がありません。パラレルでPHPおよびMysqliクエリを実行する
$numbers = array('0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20');
$numCount = count($numbers);
$a = '0';
$b = '1';
$c = '2';
$d = '3';
$rebuild = array();
echo"<br>";
for($a; $a <= $numCount; $a+=4){
if(array_key_exists($a, $numbers)){
echo $numbers[$a]."<br>";
}
}
echo "<br>";
for($b; $b <= $numCount; $b+=4){
if(array_key_exists($b, $numbers)){
echo $numbers[$b]."<br>";
}
}
echo "<br>";
for($c; $c <= $numCount; $c+=4){
if(array_key_exists($c, $numbers)){
echo $numbers[$c]."<br>";
}
}
echo "<br>";
for($d; $d <= $numCount; $d+=4){
if(array_key_exists($d, $numbers)){
echo $numbers[$d]."<br>";
}
}
まあ、あなたのコードは1つのループを実行していきますが、それらは並行して実行されません。言い換えると、2回目の 'for'ループは、前のすべてが終了するまで実行されません。スレッド化のためには、 'Thread'クラスをサブクラス化する必要があります。これを読んで:https://www.mullie.eu/parallel-processing-multi-tasking-php/ –
私の悪い...それぞれのループのためにそれは自分のファイルです...私はちょうどアイデアの迅速な表示のために書式設定しました。 – photocode
ああ、私はそれを得る。しかし、とにかく、並列処理では、複数のスレッドを使用する必要があります( –