programing

PHP MYSQLI_ASYNC 쿼리 삽입 후 계속 진행

sourcejob 2022. 9. 30. 11:06
반응형

PHP MYSQLI_ASYNC 쿼리 삽입 후 계속 진행

사용 후 PHP7.2 스크립트로 계속할 수 있는 방법이 있습니까?

$sql = "INSERT INTO `table` SET `a` = 'aaa';
$result = mysqli_query($link,$sql,MYSQLI_ASYNC);
// $result is always 'true'

삽입 지연의 수단으로요?

그것은 이제 준다.Commands out of sync; you can't run this command now스크립트를 계속 실행하고 다음 쿼리를 실행합니다.

저는 innodb를 너무 많이 써서INSERT DELAYEDPHP 스크립트의 관점에서 같은 동작을 찾고 있습니다만, 동작하지 않습니다.(배포 쿼리, 처리 대기 없음)

별도의 스크립트 및 메시지 브로커를 사용해야 합니까(Rabbit 등).MQ) InnoDB 데이터베이스로 이 작업을 수행할 수 있습니까?

네.MYSQLI_ASYNC에서 즉시 돌아오다mysqli_query().

그러나 다음 쿼리를 실행할 때 MySQL/MariaDB 세션이 여전히 사용 중일 수 있습니다. 그러면 "Commands out sync" 오류가 발생합니다.

그래서 네가 신경써야 해

  • 추가 쿼리를 실행하기 전에 (최소)
  • 전화하지 않다mysqli_close()비동기 쿼리가 완료될 때까지 해당 세션에 접속합니다.그렇지 않으면 접속이 중단됩니다.
  • PHP 스크립트가 종료되지 않도록 합니다.mysqli_close()암묵적으로, 내가 아는 한.

결론은, 「사용하지 않는다」입니다.MYSQLI_ASYNC단, 여러 병렬접속을 사용하는 매우 드문 환경이 아닌 한 접속은 종료되지 않으며 같은 세션에서 더 이상의 쿼리는 실행되지 않습니다.

도망쳐야 할 정당한 이유가 없다INSERT비동기적으로 매우 빠를 수 있습니다.

에 대해서도 마찬가지입니다.UPDATE또는DELETE단, 수백만 개의 행이 업데이트 또는 삭제된 경우는 제외합니다.

언급URL : https://stackoverflow.com/questions/49999254/php-mysqli-async-insert-query-and-continue

반응형