我正在使用googleclientapi来获取示例的状态,从而生成本地数据库副本。
可能有多张纸条更新了我的本地副本。我可以获取数据,当数据传回服务器时,其他脚本会修改数据。在我存储原始获取的数据之后,会创建一个丢失的更新。
因此,在进行更新时,我需要使用事务来阻止表中的所有其他通信
这是获取的代码:
<?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);
在脚本开始时,以防fetch失败(我假定它们使用curl)。如果执行时间超过5s,即使脚本终止,我的表(或数据库)是否仍会被阻止?我还有其他的防御机制吗?
我计划每分钟都将此代码作为cron作业运行。
1条答案
按热度按时间hk8txs481#
听起来像
listInstances
需要相当于