У нас есть внутренний веб-сайт, на котором мы используем PHP 7.2 и подключаемся к нескольким базам данных с помощью PDO. Одной из баз данных для подключения является Snowflake, для которой мы используем драйвер PDO (см. https://github.com/snowflakedb/pdo_snowflake) и подключаемся через наш веб-прокси.
Пока все хорошо.
НО, как только объект PDO будет назначен новой переменной (в качестве значения или ссылки), выполнение останавливается - на 5 минут - перед продолжением. См. Примеры ниже:
FAST: нет переназначения объекта PDO:
putenv("http_proxy=http://ourproxy:80");
putenv("https_proxy=http://ourproxy:80");
$pdo = new PDO("snowflake:account=myacount;", "myuser", "mypassword");
print(gettype($pdo));
>> it prints: 'object'
HANGS: объект PDO переназначен (он зависает примерно на 5 минут, прежде чем в конечном итоге продолжить):
putenv("http_proxy=http://ourproxy:80");
putenv("https_proxy=http://ourproxy:80");
$pdo = new PDO("snowflake:account=myacount;", "myuser", "mypassword");
$d = $pdo; // <= THIS LINE WAS ADDED
print(gettype($pdo));
>> it eventually prints: 'object'
HANGS: объект PDO переназначается как эталонный (он висит около 5 минут, прежде чем в конечном итоге продолжить):
putenv("http_proxy=http://ourproxy:80");
putenv("https_proxy=http://ourproxy:80");
$pdo = new PDO("snowflake:account=myacount;", "myuser", "mypassword");
$d = &$pdo; // <= THIS LINE WAS ADDED
print(gettype($pdo));
>> it eventually prints: 'object'