Кэширование данных CURL JSON с сервера - PullRequest
1 голос
/ 08 августа 2011

Я пытаюсь выяснить, как мне поступить с кэшированием данных, которые я извлекаю из файла json webservce на свою страницу, чтобы я не запрашивал эти данные постоянно и не отключал сервер.

В настоящее время я получаю данные в формате json следующим образом:

// jSON URL which should be requested
            $json_url = 'http://example.com/datastore.json?toolbar_id='.$persona['toolbar_id'].'';

            // jSON String for request
            $json_string = '[Json string? What is this]';

            // Initializing curl
            $ch = curl_init( $json_url );

            // Configuring curl options
            $options = array(
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
            CURLOPT_POSTFIELDS => $json_string
            );

            // Setting curl options
            curl_setopt_array( $ch, $options );

            // Getting results
            $result =  curl_exec($ch); // Getting jSON result string                
            $result = json_decode($result, true);               
            $result = $result[0];

Отсюда я могу получать результаты ассоциативного массива по мере необходимости. Но если бы я обновил страницу, она бы вызвала информацию о сервере. Какие-нибудь решения?

1 Ответ

2 голосов
/ 08 августа 2011

Вы бы восприняли это как любой другой файл кэша:

  • Проверьте, существует ли файл кэша
  • Если это так, проверьте filemtime() против текущего time()
  • Если его нужно обновить, сделайте вызов cURL, запишите данные в файл кэша и продолжите
  • Если его не нужно обновлять, просто верните данные из файла в вашу переменную.

Это будет тот же JSON, независимо от того, вернет ли PHP его через cURL или если PHP вернет его через fread() в файле кэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...