Я использую Google CloudSQL и имею следующий простой код:
<?php
$db = new pdo ( 'mysql:unix_socket=/cloudsql/<appid:id>;dbname=<database_name>', 'root', '' );
$db->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$stmt = $db->prepare ( "SELECT column1, column2, column3, column4, column5 FROM table" );
$stmt->execute ();
$returned = $stmt->fetchAll ( PDO::FETCH_ASSOC );
echo json_encode ( $returned );
?>
Но поскольку таблица базы данных слишком велика (около 150 000 строк), похоже, что она обрабатывается неправильно. Я продолжаю получать это сообщение об ошибке:
Error: Server Error
The server encountered an error and could not complete your request.
Please try again in 30 seconds.
Я знаю, что проблема в размере, потому что, как только я SELECT
только 3 столбца вместо 5, он отображает это просто отлично. На мой взгляд, 150000 строк не требуют слишком много; но это самая большая таблица, которую я создал, поэтому я не знаю, что мне не хватает.
Что я должен делать?
РЕДАКТИРОВАТЬ:
Я также пытался обновить уровень с D0 (125 МБ) до D1 (512 МБ), но это тоже не помогло.
Это предупреждение появляется, когда вы превысили предел памяти для вашего класса экземпляра App Engine. Я предполагаю, что вы находитесь в классе экземпляров «B1», поскольку 150000 строк данных превышают это. Вы можете изменить свой Instance Class, установив его значение в файле app.yaml. Я бы порекомендовал пройти через эта документация Чтобы выбрать класс экземпляра, который соответствует вашим потребностям, все, что выше B1 и F1, должно предоставить вам достаточно памяти. Также убедитесь, что вы закрываете соединение, установив $db = null;
Других решений пока нет …