Linux высокоскоростное (/ не влияет) хранилище (для настроек) и PHP - PullRequest
0 голосов
/ 04 марта 2011

Извините, если название звучит запутанно, если после этого описания у вас появятся идеи получше, смело предлагайте.

Короче говоря, я использую PHP в Linux со следующими гипотетическими файлами / кодом:

job.php:

if(setting_get('started')!='on'){
  setting_set('started','on');
  echo 'Starting...';
  set_time_limit(0); // ad infinitum (in theory)
  ignore_user_abort(true); // ignore disconnection
  while(setting_get('started')=='on'){
    // do something
    sleep(10);
  }
}else echo 'Already started!';

interface.php:

switch($_REQUEST['action']){
  case 'status':
    echo 'Service is: '.setting_get('on');
    break;
  case 'start':
    header('Location: job.php');
    break;
  case 'stop':
    setting_set('started','off');
    break;
  case 'restart':
    setting_set('started','off');
    header('Location: job.php');
    break;
}
echo '<a href="?action=status">Check Status</a>';
echo '<a href="?action=start">Start</a>';
echo '<a href="?action=stop">Stop</a>';
echo '<a href="?action=restart">Restart</a>';

Код должен быть достаточно понятен. По сути, job.php должен иметь возможность запускать только один экземпляр на неопределенный срок, пока пользователь специально не остановит его с interface.php, который служит посредником между пользователем и заданием.

Моя проблема - setting_get и setting_set - это всего лишь гипотетические функции, которые можно легко заменить на плоский файл или базу данных. Дело в том, что они называются много , поэтому они должны работать быстро, а также потреблять мало памяти (если возможно, даже вовсе).

Идеи

Редактировать: Следует отметить, что настройки, которые я сохраняю, также могут быть простым логическим флагом.

Edit2 Что касается Memcached / APC / Redis. Мне было интересно, не могу ли я использовать обычные функции mysql над БД типа MEMORY? Интересно, сколько там накладных расходов? Дело в том, что я предпочел бы использовать то, что у меня уже есть, чем устанавливать новые вещи, но опять же, это зависит от реализации.

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Как насчет APC * apc_store и apc_fetch ?

0 голосов
/ 04 марта 2011

set_time_limit (0); // до бесконечности (в теории)

вы можете запустить свою работу в cron без такого ограничения.

Использовать разделяемую память (самая быстрая), memcached, redis (дано в порядке скорости).

...