Привет, друзья!
Запускаю на сервере скрипт, который по очереди обращается к серверам из списка. Процесс занимает около 5 минут. Если очередной сервер отправляет статус "подождать" усыпляют скрипт на 60 секунд с помощью функции sleep(60). Почти в конце работы происходит ошибка atal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away.
Подключение к базе происходит следующим образом:
файл Core/Model.php
<?php
namespace Core;
use PDO;
/**
* Base model
*/
abstract class Model {
/**
* Gets the PDO database connection
*
* @return PDO
*/
protected static function getDB() {
static $db = null;
if ( $db === null ) {
$dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8';
$db = new PDO( $dsn, DB_USER, DB_PASS );
// Throw an Exception when an error occurs
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
return $db;
}
}
Сама модель:
<?php
namespace App\Models;
use PDO;
class MFO extends \Core\Model {
/**
* Creates response
*
* @param int $mfo_id
* @param int $request_id
* @param string $status
*
* @return bool
*/
public static function createResponse( int $mfo_id, int $request_id, string $status ) {
$sql = 'INSERT INTO mfo_responses (mfo_id, request_id, status, time_response) VALUES (:mfo_id, :request_id, :status, :time_response)';
$db = static::getDB();
$stmt = $db->prepare( $sql );
$stmt->bindValue( ':mfo_id', $mfo_id, PDO::PARAM_INT );
$stmt->bindValue( ':request_id', $request_id, PDO::PARAM_INT );
$stmt->bindValue( ':status', $status, PDO::PARAM_STR );
$stmt->bindValue( ':time_response', date( 'Y-m-d H:i:s', time() ), PDO::PARAM_STR );
return $stmt->execute();
}
}
Подскажите, пожалуйста, что можно сделать?