2012-08-13 3 views
0

아래의 코드를 보장하는 방법이 있습니까? 한 번에 실행됩니다. 따라서 방문객이 키보드에서 벗어나 브라우저를 닫으면 절반 만 실행되는 것이 아니라 모두 한 번에 끝내거나 모두 끝내야합니다. 조금도).PHP/MySQL 코드가 한 번에 실행되도록 보장 하시겠습니까?

mysql_query($queryone); 

mysql_query($querytwo); 

unlink($file); 

unlink($thumb); 

mysql_query($querythree); 

모든 답장과 예제 코드가 좋을 것입니다.

+0

실행하는 데 시간이 오래 걸립니까? –

+0

@PeteHerbertPenito 매우 빠르지는 않지만 (하지만 ... 로컬에서 테스트 중 ... 많은 데이터가없는 곳). – user962026

+2

[* transactions *] (http://dev.mysql.com/doc/refman/5.0/en/commit.html)에 대해 읽고 싶을 것입니다. 더욱이,'mysql_ *'함수를 사용하지 마십시오.이 함수는 더 이상 사용되지 않으며 안전하지 않습니다! MySQLi 또는 PDO를 사용하는 것이 더 좋습니다. – alfasin

답변

1

사용자가 브라우저를 중지했을 때 모두 실행되는 명령문이지만 사용자가 브라우저를 중지 한 경우 PHP가 종료하지 못하도록 명령문 앞에 ignore_user_abort(true);을 추가하십시오.

설정 php.ini을 참조하십시오. 그러면 클라이언트가 여전히 연결되어 있는지 여부에 관계없이 스크립트가 완료 될 때까지 실행됩니다.

추가 읽기 :

http://www.php.net/manual/en/features.connection-handling.php

+2

더하기 트랜잭션에서 쿼리를 실행합니다. PHP가 실패 할 경우 데이터베이스를 롤백하지만 여전히 PHP 항목 partiall을 완료하는 것은 좋지 않을 수 있습니다. –

+0

이것은 실제로 명령 행 사용에만 적용됩니다. –

+1

@MikeBrant 브라우저 연결에도 잘 작동합니다. docs를 참조하십시오. – drew010

1

당신은 MySQL의 거래를해야 할 수도 있습니다. 이 함수 (커밋, 롤백 등)는 모든 쿼리가 성공적이지 않은 경우 쿼리를 실행 취소합니다. 방문자 프레스 키보드에서 탈출하거나 브라우저를 닫으면 Mysql transactions

1

그래서, 그냥 절반 방법

방문자 브라우저를 닫거나 탈출을 누르면 (또는 그 문제에 대한 모든 키)를 실행하지 않습니다 서버에서 실행중인 스크립트에는 아무런 영향을 미치지 않습니다. 스크립트는 클라이언트의 작업과 상관없이 실행을 마칩니다.

의 그들은 모두 당신은 확실히 MySQL Transactions에서 살펴 보셔야합니다 모든

에서 한 가지 또는 없음에서 수행하는 것이 중요. 거래를 stored procedure에 넣는 것도 좋습니다.

관련 문제