Моя база данных MySQL работает в Google Cloud.В нем применяется SSL, поэтому для подключения к нему используются сертификаты и ключи:
- В командной строке я использую:
mysql --ssl-ca=/path/to/server-ca.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem --host=ip-address --user=username --password
- В случае PDO я использую *Параметры 1007 *,
PDO::MYSQL_ATTR_SSL_CERT
и PDO::MYSQL_ATTR_SSL_KEY
для указания необходимых файлов.
Оба соединения работают нормально, за исключением того, что соединение PDO в PHP очень медленное.Методу CLI требуются миллисекунды для подключения и выполнения запросов, в то время как метод PDO занимает в 5-10 раз больше времени для того же количества соединений.Я пробовал оба метода с одной и той же машины, так что это не похоже на проблему с оборудованием или сетью.Может ли PDO вызывать проблемы здесь?
Я использую Laravel на случай, если это может иметь значение.
Обновление: вещи, которые я пробовал
- Запустите любой другой PHP-скрипт (не включающий соединение MySQL) на том же сервере: очень быстро.
- Запустите PHP-скрипт, который подключается к базе данных на 127.0.0.1 / localhost и выполняетзапрос: очень быстро.
- Подключение и запрос с использованием MySQL CLI (как уже упоминалось в вопросе): очень быстро - хотя трудно проверить, насколько быстро я мог себе это представить.
- Подключение изапрашивать PHP / PDO с разных компьютеров, используя все те же настройки: очень медленно, точно так же, как на исходном компьютере, на котором я его пробовал.
Так что единственное, что я еще не пробовал, это отключение SSL/ TLS.К сожалению, я не могу сделать это с этим экземпляром по соображениям безопасности.Кроме того, основываясь на том факте, что соединение SSL / TLS с использованием CLI очень быстрое, я пришел к выводу, что оно должно быть связано с чем-то специфичным для PHP или PDO.
Я собираюсь сделать несколькоотлаживаю себя и добавлю любые релевантные результаты, как только они появятся.