programing

거래 중에 움츠러들다.

oldcodes 2023. 9. 1. 21:18
반응형

거래 중에 움츠러들다.

로컬 데이터베이스 복사본을 만들기 위해 Google 클라이언트 API를 사용하여 인스턴스의 상태를 가져오고 있습니다.

여러 스크립트가 내 로컬 복사본을 업데이트할 수 있습니다.데이터를 가져올 수 있었고 데이터가 서버로 다시 이동하는 동안 다른 스크립트가 데이터를 수정했습니다.원래 가져오기의 데이터를 저장하면 손실된 업데이트가 생성됩니다.

따라서 업데이트하는 동안 트랜잭션을 사용하여 테이블에 대한 다른 모든 트래픽을 차단해야 합니다.

다음은 가져오기 코드입니다.

<?php
require_once './gcloud/vendor/autoload.php';

$client = new Google_Client();
$client->setApplicationName('Google-ComputeSample/0.1');
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/cloud-platform');

$project = 'project_id';  // TODO: Update placeholder value.
$zone = 'us-east1-b';  // TODO: Update placeholder value.
$instance = 'instance-1';  // TODO: Update placeholder value.

$mysqli = new mysqli($hn, $un, $pw, $db);
$mysqli->begin_transaction();

$listInstancesJSON = $service->instances->listInstances($project, $zone, []);

//store it

$mysqli->commit();

요청을 하는 동안 테이블을 차단하는 것은 끔찍한 생각처럼 들립니다.덧붙일 생각입니다.ini_set('max_execution_time', 5);만약 페치가 실패할 경우를 대비하여 스크립트 시작 시에. (컬을 사용하는 것 같습니다.)실행 시간이 5초를 초과하는 경우 스크립트 종료 후에도 테이블(또는 데이터베이스)이 차단된 상태로 유지됩니까?제가 실행해야 할 다른 방어 메커니즘이 있습니까?

저는 매 분마다 이 코드를 cron 작업으로 실행할 계획입니다.

그런 것처럼 들립니다.listInstances다음과 같은 것이 필요합니다.

SELECT ... FOR UPDATE

언급URL : https://stackoverflow.com/questions/51463267/curl-within-transaction

반응형