PHP에서 MySQL 데이터베이스 가져오기 최적화: 쿼리를 안정적으로 분할
웹 개발 영역에서는 공유 서버에서 호스팅되는 웹 사이트를 업데이트하는 시나리오가 발생합니다. 데이터베이스 업데이트가 필요합니다. 그러나 외부에서 MySQL에 액세스할 수 없다는 점은 문제를 야기합니다. 이 문제를 해결하려면 PHP를 통해 MySQL 파일을 가져오는 것이 필요합니다. 이 기사에서는 대용량 MySQL 데이터베이스 파일을 개별 쿼리로 분할하고 PHP를 사용하여 이를 가져오는 효율적인 솔루션을 탐색합니다.
문제 설명
목표는 전체 파일을 동시에 열지 않고도 대용량 데이터베이스 파일을 개별 쿼리로 분할합니다. 제약 조건에는 MySQL 명령줄 기능, LOAD DATA INFILE, phpMyAdmin 및 mysqli_multi_query()를 사용할 수 없다는 것이 포함됩니다.
해결책: SplitSQL 함수
해결책은 메모리에 있습니다. - 파일을 한 줄씩 반복하고 쿼리 구분 문자를 식별하는 SplitSQL이라는 친숙한 함수입니다. 구분 기호가 나타날 때까지 행을 배열에 누적하여 완전한 쿼리를 형성합니다. 그런 다음 함수는 쿼리를 실행하고 성공 또는 실패에 대한 피드백을 제공합니다.
구현
<code class="php">function SplitSQL($file, $delimiter = ';') { set_time_limit(0); if (is_file($file) === true) { $file = fopen($file, 'r'); if (is_resource($file) === true) { $query = array(); while (feof($file) === false) { $query[] = fgets($file); if (preg_match('~' . preg_quote($delimiter, '~') . '\s*$~iS', end($query)) === 1) { $query = trim(implode('', $query)); if (mysql_query($query) === false) { echo '<h3>ERROR: ' . $query . '</h3>' . "\n"; } else { echo '<h3>SUCCESS: ' . $query . '</h3>' . "\n"; } while (ob_get_level() > 0) { ob_end_flush(); } flush(); } if (is_string($query) === true) { $query = array(); } } return fclose($file); } } return false; }</code>
테스트 및 출력
대규모 phpMyAdmin SQL 덤프로 테스트한 결과 SplitSQL 함수는 성공적인 결과를 얻었습니다. 샘플 입출력은 다음과 같습니다.
테스트 데이터
<code class="sql">CREATE TABLE IF NOT EXISTS "test" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" TEXT, "description" TEXT ); BEGIN; INSERT INTO "test" ("name", "description") VALUES (";;;", "something for you mind; body; soul"); COMMIT; UPDATE "test" SET "name" = "; " WHERE "id" = 1;</code>
출력
SUCCESS: CREATE TABLE IF NOT EXISTS "test" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" TEXT, "description" TEXT ); SUCCESS: BEGIN; SUCCESS: INSERT INTO "test" ("name", "description") VALUES (";;;", "something for you mind; body; soul"); SUCCESS: COMMIT; SUCCESS: UPDATE "test" SET "name" = "; " WHERE "id" = 1;
결론
SplitSQL 기능은 대용량 MySQL 데이터베이스 파일을 개별 쿼리로 분할하고 이를 PHP를 사용하여 실행하기 위한 안정적인 솔루션을 제공합니다. 앞서 언급한 제약 조건을 효과적으로 해결하고 데이터베이스 업데이트를 자동으로 가져올 수 있습니다. 이 접근 방식은 공유 호스팅 환경에서 원활한 데이터베이스 유지 관리를 보장합니다.
위 내용은 PHP를 사용하여 대용량 MySQL 파일을 공유 호스팅 환경으로 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!