Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> shmop_open 
V
    Опции темы
RinatR
Дата 30.11.2010, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Здраствуйте!
В php вроде как есть возможность загружать необходимую инфу в оперативную память. Вроде все понятно, но справки и примеров как кот налакал. 

Есть что-то вроде такого (из примера на php.net)

Код

// Create 100 byte shared memory block with system id if 0xff3
$shm_id = shmop_open(0xff3, "c", 0644, 100);
if (!$shm_id) {
    echo "Couldn't create shared memory segment\n";
}


Вопрос про первый параметр (0xff3). Как я понимю, здесь должно быть какое-либо уникальное значение? Это что-то вроде ключа Так? Или оно откуда-то берется?
Если да, то как мне возможно мою строку (например строка - это название файла item.htm) превратить в такой вот вид?


Это сообщение отредактировал(а) RinatR - 30.11.2010, 00:12
PM MAIL   Вверх
gta4kv
Дата 30.11.2010, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



PM MAIL   Вверх
RinatR
Дата 30.11.2010, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Было бы глупо, если бы я там не смотрел. 
Больше интересует вторая часть вопроса. Как возможно превратить строку в такой параметр, чтобы он был уникальным? 
Там предлагается делать ftok'ом, но этот вариант не подойдет ибо:

1) У меня винда, на которой этот товарищ не работает
2) ftok, как я понимаю обращается к файлу, и получает что-то из него. Тогда смысл теряется, ибо это совсем будет не быстро.
PM MAIL   Вверх
gta4kv
Дата 30.11.2010, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Код

function ftok($pathname, $proj_id) {
    $st = @stat($pathname);
    if (!$st) {
        return -1;
    }
   
    $key = sprintf("%u", (($st['ino'] & 0xffff) | (($st['dev'] & 0xff) << 16) | (($proj_id & 0xff) << 24)));
    return $key;
}

PM MAIL   Вверх
RinatR
Дата 30.11.2010, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Функция stat подразумевает оборащение к файлу. 
Код

 $st = @stat($pathname);



Вот мой пример (кеширование файлов в оперативной памяти)

Код


function shmop_get_contents($filename)
{
    
    
    $key =  ftok($filename, 't');          
  
   $id = shmop_open($key, "a", 0644, 2000);
   
   if ($id === FALSE)
   {
         $content = file_get_contents($filename);       
         $id = shmop_open($key, "c", 0644, 2000);
         shmop_write($id, $content, 0);
         $return = shmop_read($id, 0, 2000);       
   }
   else
   {
     $return =  shmop_read($id, 0, 2000);     
       
   }


Если ftok будет обращатся к этим файлам из свойств файла гененрировать ключи только для того, чтобы потом прочесть все это дело из оперативной памяти... то смысла нету.

Это сообщение отредактировал(а) RinatR - 30.11.2010, 13:38
PM MAIL   Вверх
ksnk
Дата 30.11.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



RinatR, функция stat лезет не в файл, а в запись о файле в файловой системе, что существено быстрее, так как в обычных системах эта информация и так в памяти.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
gta4kv
Дата 30.11.2010, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Поставьте memcahced smile
PM MAIL   Вверх
RinatR
Дата 30.11.2010, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Чего-то я не уверен, что вышеописаный способ гененрирует уникальные ключи.
После старта вот такая ерунда:


Код


---------------------------
httpd.exe - Ошибка приложения
---------------------------
Инструкция по адресу "0x00a06e4c" обратилась к памяти по адресу "0x80000017". Память не может быть "written".


"ОК" -- завершение приложения
"Отмена" -- отладка приложения
---------------------------
ОК   Отмена   
---------------------------


Вот чё получается:
Код

251638400
251638400
251638400
251638400
251638400
251638400
251638400
251638400
251638400


если присмотрется внимательно, то можно увидеть следующую тенденцию:

Код

        
        echo $pathname;
        echo '<br>';
        echo $st['ino'];
        echo '<br>';
        echo $st['dev'];
        echo '<br>';


Код

путь/includes/functions/all.php
0
25
1638400
путь/config/config_debug.php
0
25
1638400
путь/config/config_db.php
0
25
1638400
путь/modules/files/switch.php
0
25
1638400


gta4kv: 
- Здраствуйте, скажите пожалуйста, у этой булочки помимо орехов, что внутри?
- Возьмите лучше торт!

Тоже самое получается... короче игрался я и с memcached, пока совсем не впечатлил.




Это сообщение отредактировал(а) RinatR - 30.11.2010, 22:20
PM MAIL   Вверх
gta4kv
Дата 30.11.2010, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата

Тоже самое получается... короче игрался я и с memcached, пока совсем не впечатлил.

Значит, вы не умеете его готовить. smile Facebook, например, впечатляет мэмкэшед.

Давайте пойдем по другому - в чём задача вообще? На самом ли деле нужно использование оперативной памяти для этой цели...
PM MAIL   Вверх
RinatR
Дата 30.11.2010, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Да, нужно. Тот же file_get_contens работает на порядок дольше. 

Не хотелось уводить тему в другое русло, таки но офтоп: 
C memcache можеть что-то и не так сделал, но этот вопрос я задам в другой теме все же.

Сейчас, я просто пробую различные способы кеширования (будь то memcache, shmop, APC и др.). Хотел сравнить. Пока shmop быстрее работает. 
PM MAIL   Вверх
gta4kv
Дата 30.11.2010, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(gta4kv @ 30.11.2010,  14:49)
в чём задача вообще?

^^^
PM MAIL   Вверх
RinatR
Дата 30.11.2010, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Задача: Кеширование php файлов в оперативной памяти и последующий доступ к ним. 
PM MAIL   Вверх
gta4kv
Дата 30.11.2010, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Зачем?
PM MAIL   Вверх
RinatR
Дата 30.11.2010, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



Чего работает быстрее? К жесткий диск или к оперативная память?

Это сообщение отредактировал(а) RinatR - 30.11.2010, 22:24
PM MAIL   Вверх
gta4kv
Дата 30.11.2010, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Ответ очевиден. Но, я сомневаюсь, в том масштабе, при котором это начинает быть заметным.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1055 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.