こんにちは仲間:) DBに格納されている一部のワーカーデータを処理するためにPHPコードを作成する必要がありました。私は望みの結果を得ましたが、秒と秒(秒と秒!>。<)が完了するので、私は正しい方法で何かをやっていません:(テーブルから別のレコードにレコードをコピーするときのパフォーマンスを改善
労働者のデータが保存されていますMySQLのテーブル内(TABLE1)、このような何か:
私は日付のペアを与えている:initial_date(a)とfinal_date(B)を、私の目標は、コピーすることですので、与えられた労働者のデータを新しいテーブル(table2)にaからbへと日ごとに更新する。期待されるテーブルは以下の通りでなければならない(このテーブルは後で質問の一部ではない更なる操作のための基礎、)
ように、それはaとbの日付、および「ジャンプ」週末と祝日の間で既存のデータを上書きするための要件です。
が私の目標を取得するには、私はこれが(の接続とすべてのことが行われているとはcheckworkingday機能が与えられていると仮定する)をコードしています:
$initialdate = '2016-10-10';
$finaldate = '2016-10-12';
$x = $initialdate;
do {
if (checkworkingday($x) == true) {
$query = mysqli_query($connection,"SELECT name,task FROM table1");
while($row = mysqli_fetch_array($query)) {
$task = $row['task'];
$worker = $row['name'];
$query2 = mysqli_query($connection,"SELECT task FROM table2 WHERE name = '$worker' AND date = '$x'");
$row2 = mysqli_fetch_array($query2);
$existingtask = $row2['task'];
if (!isset($existingtask)) {
mysqli_query($connection,"INSERT INTO table2 (date,name,task) VALUES('".$x."','".$worker."','".$task."')");
} else {
mysqli_query($connection,"UPDATE table2 SET task = '".$task."' WHERE date = '".$x."' AND worker = '".$name."'");
}
}
}
$x = date('Y-m-d', strtotime($x . "+1 day"));
} while ($x <= $finaldate);
わずか3日間の例に示すように、終わりには時間がかかります。数週間または数ヶ月間、非常に長い時間がかかります(日付の範囲によっては最大実行時間を超えても!)。
私は初心者であり、コードはかなり素朴であることを知っていますが、コードと情報を改訂してチェックしました。私は間違って何をしていますか?感謝:)代わりenitreデータをループの
申し訳ありませんが、私がチェックしている別の要件を忘れてしまったとbの間の日は、週末や祝日されていないです。ちょうど編集されました。 – b1919676