Linux высокоскоростное (/ не влияет) хранилище (для настроек) и PHP

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

Короче говоря, я использую 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 ответа

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

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

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

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

Другие вопросы по тегам