Shared memory

Illusive

Guest
Shared memory

Добрый день.
Не удается выделить разделяемую память.
Привызове shmop_open выдает, что Call to undefined function shmop_open().

данные по системе:
System Windows NT APACHE 5.2 build 3790
Configure Command cscript /nologo configure.js "--enable-snapshot-build" "--with-gd=shared"
Server API Apache 2.0 Handler

В мане сказано, что никаких библиотек подключать не надо. Не подключаю. но не помогает. :)
 

Illusive

Guest
Спасибо! :) Увиделось. :)
Тестовый пример отработал. Память, якобы, выделилась, туда данные записались, прочитались, память удалилась.
Иду дальше, хочу сгенерить ключ с помощью ftok и получаю:
Fatal error: Call to undefined function ftok().

Надо еще что-то в php.ini включить, или просто везение мое такое сегодня? :)
 

Illusive

Guest
У меня есть необходимость создать одно соединение с ораклом и всех входящих через него гнать.
Т.е. я хотел в разделяемую память загнать хидер соединения с ораклом, и с ним работать всеми входящими юзерами.
Как-то так. :)
 

Wicked

Новичок
[m]oci_pconnect[/m]() ?

Но я бы посоветовал подумать 7 раз, прежде чем использовать одно соединение.

-~{}~ 14.08.06 20:49:

У меня есть необходимость ...
И что это за такая необходимость?
 

Illusive

Guest
Ситуация такая.
Много народа ломится через вэб-сервер.
Каждый входящий пытается создать свое соединение с ораклом, и таких соединений может быть много. Теоретически, при большом числе соединений на вэб-сервере, сессии, созданные на орокловом экземпляре, могут выжрать почти всю свободную память, что не есть хорошо.
Можно на уровне апача ограничить число одновременных соединений, но это как-то не спортивно.. Хочется средствами php ограничить число соединений с ораклом (как вариант - создать и расшарить несколько соединений).
P.S. а разве oci_pconnect позволяет передавать хидер соединения между независимо запущенными php-скриптами?
 

tony2001

TeaM PHPClub
>а разве oci_pconnect позволяет передавать хидер соединения между независимо запущенными php-скриптами?
передавать что-что?

oci_pconnect() создает 1 соединение на 1 чайлд апача.
сколько будет жить чайлд, столько будет жить и соединение.
сколько будет чайлдов, столько будет и соединений.

но начинать надо с другого:

>Много народа ломится через вэб-сервер.
>Каждый входящий пытается создать свое соединение с ораклом, и таких соединений может быть много.
вот совершенно нечего _каждому _пользователю давать выполнять что-то в Оракле.
если они просто выбирают данные - эти данные можно кэшировать и периодически обновлять.
 

StUV

Rotaredom
удивительно просто =)
работаю над решением аналогичной проблемы
правда в моем случае требуется оптимизировать большое число запросов на изменение данных...

tony2001
будет ли соединение, открытое с помощью oci_pconnect в запускаемом из коммандной строки пхп-демоне, перехватываться в его (демона) чайлдах ?
 

tony2001

TeaM PHPClub
а какая разница?
любой ресурс в случае с демоном будет вести себя одинаково - у него же request никогда не заканчивается, соотв-но, все ресурсы продолжают существовать (если они не были закрыты явно).
 

Illusive

Guest
Автор оригинала: tony2001
oci_pconnect() создает 1 соединение на 1 чайлд апача.
сколько будет жить чайлд, столько будет жить и соединение.
сколько будет чайлдов, столько будет и соединений.
Извини, я не совсем понял.
Под чайлдами понимаем демонов, запускаемые апачем при запуске самого апача (у меня в списке процессов их 4 штуки, кажется), или каждый запускаемый из-под апача php-скрипт пораждает чайлда?

Автор оригинала: tony2001
но начинать надо с другого:

>Много народа ломится через вэб-сервер.
>Каждый входящий пытается создать свое соединение с ораклом, и таких соединений может быть много.
вот совершенно нечего _каждому _пользователю давать выполнять что-то в Оракле.
если они просто выбирают данные - эти данные можно кэшировать и периодически обновлять.
Ты сейчас говоришь про отображение статических данных? Типа, курс валюты, погода, программа телепередач?
У меня надо оперативно отображать изменение состояния базы. А база меняется.. для каждого подключающегося посмотреть данные, до 2-3 тысяч раз в сутки. Т.е. десяток человек весь день в базу что-то забивают, а потом некто приходит, и смотрит, что без него назаносили.
 

tony2001

TeaM PHPClub
>Извини, я не совсем понял.
>Под чайлдами понимаем демонов, запускаемые апачем при запуске самого апача
предлагаю оставить глвау "Как работает Апач. Самые основы" в кач-ве домашнего задания.

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

StUV

Rotaredom
tony2001
все ресурсы продолжают существовать (если они не были закрыты явно)
спасибо =)

-~{}~ 15.08.06 12:51:

tony2001
сделал тест для ком.строки:
PHP:
#!/usr/local/bin/php
<?php
	$dbh = oci_pconnect(...); 
	$args = array(0);
	pcntl_exec(__FILE__, $args, $_ENV);
	sleep(5);
	oci_close($dbh);
?>
нетстатом проверяю наличие новых соединений - каждый чайлд порождает новое соединение
PHP 5.1.4

я что-то не так делаю ?
 

tony2001

TeaM PHPClub
почему не так?

oci_pconnect() создает 1 соединение на 1 чайлд апача.
сколько будет жить чайлд, столько будет жить и соединение.
сколько будет чайлдов, столько будет и соединений.
 

StUV

Rotaredom
создает 1 соединение на 1 чайлд апача
разве pcntl_exec запускает не чайлд-процессы относительно себя ?

как тогда сделать так, чтобы соединение было одно на дерево процессов ?
 

tony2001

TeaM PHPClub
никак?
как ты планируешь разруливать доступ к этому соединению?
представье себе, что один процесс делает UPDATE, а другой в это время ROLLBACK.
 

StUV

Rotaredom
tony2001
хм...
т.е. несколько транзакций не могут выпоняться в рамках одного соединения ?
 

Illusive

Guest
А если реализовать пул коннектов к ораклу?
Например, десяток процессов устанавливают соединеня сораклом и висят постоянно. И всем, кому нужен оракл, идут через пул. Либо цепляя свободное соединение, либо ожидая в очереди, пока освободится одно из открытых.
мы тогда экономим время на открытии/закрытии соединений.
Теоретически.
 

StUV

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