안녕 친구 : DB에 저장된 일부 직원의 데이터를 처리하기 위해 PHP 코드를 만들어야했습니다. 원하는 결과를 얻었지만 몇 초 (초 및 초!> .<)가 끝나기 때문에 올바른 방법으로 뭔가를하지 않을 것입니다. (테이블에서 다른 테이블로 레코드를 복사 할 때 성능 향상
노동자 데이터가 저장됩니다. MySQL의 테이블 (표)이 같은 뭔가 :
나는 날짜의 쌍을 제공하고 있습니다 : 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 데이터를 통해 반복의
미안 해요, 확인하는 또 다른 요구 사항을 잊어 a와 b 사이의 일이 주말이나 휴일되지이다. 방금 편집했습니다. – b1919676