PHP curl переключается между устаревшими (кэшированными?) И современными результатами назад и вперед - PullRequest
0 голосов
/ 20 сентября 2018

Хорошо, это плохой вопрос с точки зрения недостаточной воспроизводимости, но мне действительно нужны некоторые советы, поэтому, пожалуйста, потерпите меня.

У меня есть упрощенный скрипт PHP, который используется для прокси статического CORSОтключенная страница к скрипту.Страница представляет собой «pubhtml» версию электронной таблицы Google (опция «Файл → Опубликовать в Интернете»), и ее содержание время от времени меняется.Вот сценарий (простая версия):

// allow CORS to grab data via js
header("Access-Control-Allow-Origin: *");

$pageUrl = 'https://docs.google.com/spreadsheets/....../pubhtml';

// get the page
$curl_session = curl_init($pageUrl);
curl_setopt($curl_session, CURLOPT_RETURNTRANSFER, true);
$proxiedRequestResponse = curl_exec($curl_session);
if($proxiedRequestResponse === false) {
    $request_error = curl_error($curl_session);
    //# deal with errors, use $request_error
}
curl_close($curl_session);

// send the result
print $proxiedRequestResponse;

Довольно просто, верно?(что упрощено, так это то, что на самом деле я проверяю $_GET на прокси-сервере на одной из немногих страниц, которые у меня есть, но их, конечно, нельзя спутать)

Теперь проблема в том, что в какой-то момент я заметил, что иногда ответы проксис устаревшими данными.И не только это, иногда он дает обновленные данные, а после этого (через некоторое время) снова возвращает устаревшие данные!(показывает состояние данных старше того, которое они уже показывали ранее)

Я точно знаю, что данные в электронной таблице не были сторнированы.Я видел обновленную страницу pubhtml и открыл ее прокси-версию, которая показала мне устаревшие данные;Я пытался обновить, и только иногда это делало его актуальным.

Я пытался добавить запрос метки времени к URL, как это:

$pageUrl = '.....'.'?noCacheTimestamp='.date('mdYHis');

, а такжедобавлено

curl_setopt($curl_session, CURLOPT_FRESH_CONNECT, TRUE);

, но по-прежнему можно получать либо обновленные, либо устаревшие данные в произвольном порядке.

Это действительно странно, поэтому любые указания на то, почему это может произойти или как это исправить (или отладка) это очень приветствуется.

...