Иногда я получаю неясную ошибку от Apache при попытке выполнить запросы к моей удаленной базе данных PostgreSQL 9.3 с использованием pg_query_params()
в PHP 5.3.29:
<br /> <b>Warning</b>: pg_query_params() [<a href='function.pg-query-params'>function.pg-query-params</a>]: Query failed: SSL error: block type is not 01 in <b>/index.php</b> on line <b>171</b><br />
Это происходит только периодически - запрос обычно преуспевает, поэтому я знаю, что это не синтаксис или другая проблема с моим кодом. Однако, для полноты, здесь соответствующие PHP и SQL:
...
$query = <<<POWER_TEACHERS
WITH teachers AS (
SELECT ca.started_by_id, sus.email, sus.zip_code
FROM common_activityinstance ca, socrative_users_socrativeuser sus
WHERE ca.end_time >= $1::date
AND ca.end_time < $2::date + 1
AND ca.started_by_id = sus.id
AND sus.zip_code IS NOT NULL
GROUP BY ca.started_by_id, sus.email, sus.zip_code
HAVING COUNT(*) >= 3
ORDER BY random()
LIMIT 250
), activities AS (
SELECT ca.id, t.email, t.zip_code
FROM common_activityinstance ca, teachers t
WHERE ca.end_time >= $1::date
AND ca.end_time < $2::date + 1
AND ca.started_by_id = t.started_by_id
)
SELECT zip_code, email
FROM (
SELECT DISTINCT ON (s.user_uuid) s.user_uuid, a.id, a.email, a.zip_code
FROM students_studentresponse s, activities a
WHERE s.activity_instance_id = a.id
ORDER BY s.user_uuid
) sub
GROUP BY email, zip_code
HAVING COUNT(*) >= 3
ORDER BY zip_code;
POWER_TEACHERS;
$result = pg_query_params($con, $query, array($lastWeek, $today)); // error here
...
Что может вызвать это странное поведение?
В случае, если это помогает кому-либо еще, я "решил" эту проблему, перепутывая PHP, переключаясь на Node.js и используя отличный pg-native модуль. Мой запрос сверху, полностью без изменений, выполняется без каких-либо проблем.
pg_query_params()
непосредственно перед и после сбоя вышеупомянутого запроса (связь между клиентом / сервером достаточно надежна, и там прокси не используется). Единственное отличие, которое я вижу, состоит в том, что мои успешные запросы напрямую ссылаются на глобальную переменную$_POST
, тогда как в этом нет. Может ли это иметь значение? (Я хватаюсь за соломинку, потому что это очень странно.)