Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Пул соединений

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: 1С COMConnector
Alpinist
Отправлено: 06 Февраля, 2010 - 14:38:33
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Как сохранить в сессию конектор подключения к базе? То что возвращает база при соединении не получается записать в сессию, результат виден только в рамках текущей работы с пхп файлом. Странно вообще, в рамках файла результат есть, а при перезапуске результата нет. Строковые переменные он возвращает нормально.
<?
session_start();
$loggedin="Абдулов (директор)";
$loggedpasv="";
$file="//S2003/мои документы/1C/DemoAccounting";
if($_SESSION['connector']==1) echo "True"; // не вернет тру сколько не перезапускай
// соединение с COM-соединителем 1С-базы
$_SESSION['connector']=New COM("V81.COMConnector");
$res = $_SESSION['connector']->Connect("File=\"$file\";Usr=\"$loggedin\";pwd=\"$loggedpasv\";");
//
if($_SESSION['connector']==1) echo "True"; // вернет тру
echo($res->ТиповыеОтчеты->РабочаяВерсияНастройкиОтчетов());
?>

Какие варианты сохранения результатов есть?
 
 Top
JustUserR
Отправлено: 07 Февраля, 2010 - 00:01:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Alpinist пишет:
Какие варианты сохранения результатов есть?
Функция называется serialize которая позволяет сохранить любой доступный в PHP тип данных в виде закодированной строки и в частности положить данный результат в сессию Для обратной раскодировки служит функция unserialize


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
valenok
Отправлено: 07 Февраля, 2010 - 09:38:29
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




mysql_pconnect


-----
Truly yours, Sasha.
 
My status
 Top
JustUserR
Отправлено: 07 Февраля, 2010 - 13:44:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




valenok пишет:
mysql_pconnect
Эээ здесь же вроде бы вообще OLE-соединение с базой 1С и суть задачи заключается в том чтобы сохранить и потом считывать ресурс данного OLE-соединения - вроде бы для этих целей serialize/unserialize лучше всего подходят


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
valenok
Отправлено: 07 Февраля, 2010 - 14:23:56
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Даже не чувствую себя виноватым за то, что не прочел код.
Механизм сессий и так уже сериализовывает все при записи файл.
Здесь дело в том, что garbage collector по завершению работы скрипта удаляет из памяти соединение с 1С, хотя в файл (сессию) все же записывается адрес в памяти.
К следующему запуску, соответсвнно, адрес уже пуст.

Как вариант shared memory / php-cgi


-----
Truly yours, Sasha.
 
My status
 Top
JustUserR
Отправлено: 07 Февраля, 2010 - 14:48:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




valenok пишет:
Хотя в файл (сессию) все же записывается адрес в памяти
Тогда все понятно - но mysql_pconnect тут точно не причем Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Alpinist
Отправлено: 07 Февраля, 2010 - 20:27:38
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




valenok пишет:
Здесь дело в том, что garbage collector по завершению работы скрипта удаляет из памяти соединение с 1С, хотя в файл (сессию) все же записывается адрес в памяти.
К следующему запуску, соответсвенно, адрес уже пуст.

Дружище - это 100% и если не секрет откуда взял такие данные?

Говорят __sleep, __wakeup - помогут, но я не могу понять как это все работает
(подробности тут: http://www.urlix.ru/docs/php/language.oop5.magic.html)

Заранее благодарен за помощь.
 
 Top
valenok
Отправлено: 08 Февраля, 2010 - 08:12:00
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Я думаю вам лучше этот вопрос направить тем, кто говорит что __sleep / __wakeup помогут.
Данные откуда? Из документации по PHP. Полезная вещь, да.


-----
Truly yours, Sasha.
 
My status
 Top
Alpinist
Отправлено: 08 Февраля, 2010 - 09:34:55
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




valenok пишет:
garbage collector

Это отключить можно? Shared memory не подходит, многие хостеры вообще ее не задействуют.
(Добавление)
В документации к serialize:
http://ru2.php.net/manual/en/fun...on.serialize.php

Написанно следующее:
Note: It is not possible to serialize PHP built-in objects.
Дословно: Это не возможно, чтобы преобразовать встроенные объекты PHP в последовательный режим.

PHP вообще способен адекватно передавать COM-объекты? В первом сообщении я привел пример, строковые переменные передавались нормально, а указатель на соединение, котороый возвращает TRUE при соединении, на выходе из сессии возвращает FALSE.
 
 Top
Stierus Супермодератор
Отправлено: 08 Февраля, 2010 - 10:13:48
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Сохранить соединение ты никак не сможешь, можно лишь создавать новое и автоматически приводить его к состоянию такому же, какое было при закрытии предыдущего соединения. В сессию записывать не ресурс соединения, а список действий, которые надо совершить с новым соединением, что бы прийти к тому виду, что у тебя сейчас есть.
 
My status
 Top
valenok
Отправлено: 08 Февраля, 2010 - 10:14:00
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




В том-же мануале написано
serialize() handles all types, except the resource-type

А многие хостеры вообще позволюят работать с СОМ объектами 1С ?*


-----
Truly yours, Sasha.
 
My status
 Top
Alpinist
Отправлено: 08 Февраля, 2010 - 11:29:37
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




valenok пишет:
А многие хостеры вообще позволюят работать с СОМ объектами 1С ?

Без понятия, но тот что сейчас под рукой позволяет это делать, видимо реализовали под линуксом как-то. Эксперименты с php_request_shutdown() не помогут отключить garbage collector на время?
Stierus пишет:
Сохранить соединение ты никак не сможешь, можно лишь создавать новое и автоматически приводить его к состоянию такому же, какое было при закрытии предыдущего соединения. В сессию записывать не ресурс соединения, а список действий, которые надо совершить с новым соединением, что бы прийти к тому виду, что у тебя сейчас есть.

То есть ваше мнение - пул соединений с COM-сервером базовыми средствами php, мне не создать никак?
 
 Top
Stierus Супермодератор
Отправлено: 08 Февраля, 2010 - 15:02:30
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




После отработки скрипта, все открытые соединения закрываются, если не закрываются ( mysql_pconnect и тд) - то теряется связь с ними ...
 
My status
 Top
JustUserR
Отправлено: 08 Февраля, 2010 - 17:04:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Alpinist Даже если вы выключите garbage collector то кто вам сказал что PHP сможет при следующем запуке сам найти ту область в памяти и что система ее не очистит
Как адекватное решение напишите daemon скажем на Perlе который будет держать COM-соединения постоянно и уже обменивайтесь данным с ним а он в свою очередь с 1С-базой
Да и кроме того опишите оригинальную задачу зачем сохранять ресурс соединения при перезапуске? Может проблема решается по-другому?


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Alpinist
Отправлено: 09 Февраля, 2010 - 09:49:15
Post Id


Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




JustUserR пишет:
Да и кроме того опишите оригинальную задачу зачем сохранять ресурс соединения при перезапуске?

Необходимо сделать онлайн магазин в связке с 1С 8.1 базой. Веб-сервер находится на удаленном хостинге с поддержкой COM-соединений. Сервер 1С тоже в интернете на выделенном канале. При оформлении заявки на сайте происходит соединение с базой 1С, где формируется Договор с покупателем. Форма журнала договоров с Покупателями обновляется на компьютере менеджера каждые пять секунд и менеджеры получают заявку практически онлайн + могут своевременно выписать все необходимое в случае если человек приехал. Суть в том что если 1С не доступен из интернета то заявка не оформляется, никаких вариантов с тем чтобы отослать как-то по почте результат или сделать сторонюю базу заказчик не рассматривает. Все завязано на том что человек зашел на сайт, оформил заявку, нажал Отправить и приехал оплатить и забрать товар, а менеджеры своевременно прозвонили и подготовили товар.
Задержка 5-6 секунд на одном соединении не годится.
Если выхода не будет то придется написать модуль на перле.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Операционная система и системные вызовы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB