2013-06-11 1 views
3

Я искал способ хранения некоторых данных, поступающих через API, и иметь возможность доступа к этим данным из другого экземпляра того же скрипта. В основном, когда я получаю запрос, я хочу сохранить данные в течение 5 секунд и посмотреть, поступает ли другой запрос с одним из полей, соответствующих в течение 5 секунд. Я пробовал это несколькими способами с сеансами и с использованием APC. Ниже приведена версия кода APC, версия сеанса совпадает с битами APC, которые были отключены для соответствующих битов сеанса.PHP: Хранение данных для другого экземпляра вашего скрипта

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

Заранее благодарю вас за помощь.

//data exists, this is the second request with matching data. 
if(apc_exists('key')){ 
    //do work 
    //delete first request data from storage so it does not get processed below. 
    apc_delete('key'); 
} else { 
    //no data for this key, store data and wait 5 secs. 
    apc_add('key', $data); 
    sleep(5); 
//stored data still exists, this is the only request coming with this data. 
if(apc_exists('key')){ 
     //do work 
    } else { 
     //data no longer exists, taken care of by other instance, just exit. 
    exit(); 
} 
+0

Вам не хватает закрывающего '' '. Это опечатка здесь или в вашем коде? 'apc_delete ('key);' –

+0

Да, здесь была опечатка. Исправлена. Спасибо. – pita

+1

Механизм сеанса будет работать только в том случае, если вы запрашивали с тем же браузером, так что это не то, что вы ищете. Тем не менее, решение APC должно делать работу просто отлично. У вас php работает как cgi/fcgid? –

ответ

1

APC не гарантирует работу с CGI/FastCGI SAPI - вы можете лучше смотреть в Redis, Memcached или других системах хранения ключ-значение, независимо от PHP.