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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Одновременная работа двух скриптов, для одного пользователя 
:(
    Опции темы
Jema
Дата 11.7.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



По непонятной мне причине вопрос перенесен в раздел "Общие"... http://forum.vingrad.ru/forum/topic-162882...0%BE%D0%BA.html
Если я не бросаюсь "умными" словами в посте, это не значит что вопрос пустяковый. И зачем было тереть мои ответы? Я о винграде был друго-го мнения.

Но вопрос остался не решенными решить нужно. Повторяю описание проблемы:
Есть скрипт который работает примерно 10 минут. Проблема в том, что нужно в это время ( пока работает первый скрипт ) чтобы отработал второй скрипт (для этого же пользователя, для этой же сессии).
Опыты показали, что если открывать второй скрипт в дургом браузере, образуется другая сессия и скрипт отрабатывает, если открывать в том-же браузере, используется та же сессия (что и надо!) но скрипт ставится в очередь и ЖДЕТ пока первый закончит свою работу.
Вопрос: можно ли настроить PHP на отработку например хотябы 2 скриптов ОДНОВРЕМЕННО.
Для чего это нужно - пока работает первый скрипт - со второго скрипт апередать ему данные (в сессию, в файл или еще как). Но второй скрипт ждет завершения первого =(
FreeBSD 6.2, Apache2.2, PHP 5.1.2
Есть какие идеи?
PM MAIL   Вверх
Fally
Дата 11.7.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



pcntl_fork'ом попробывать породить дочерний процесс, а из него (дочернего) запустить второй скрипт.. 


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
Jema
Дата 11.7.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



pcntl_fork больше подходит для "раздвоения" работающего скрипта... В моем случае запрос идет от браузера и второй скрипт не может запуститься.
Получается я не знаю какой скрипт будет запускаться вторым. Правда может можно первый отправить во второй поток (в ребенка), а родителя прибить... но тогда скорее всего умрут оба.
Не вижу решения от pcntl_fork
PM MAIL   Вверх
z-END
Дата 11.7.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


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

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



Цитата(Jema @  11.7.2007,  16:23 Найти цитируемый пост)
Если я не бросаюсь "умными" словами в посте, это не значит что вопрос пустяковый. И зачем было тереть мои ответы? Я о винграде был друго-го мнения.

потомучто вопросу именно там и место.
Цитата(Jema @  11.7.2007,  16:23 Найти цитируемый пост)
Для чего это нужно - пока работает первый скрипт - со второго скрипт апередать ему данные (в сессию, в файл или еще как). Но второй скрипт ждет завершения первого =(

какая в этом логика?! 

открывай из первого скриптка второй curl'ом. 


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Jema
Дата 11.7.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(z-END @  11.7.2007,  16:09 Найти цитируемый пост)
какая в этом логика?! 

Логика такая, что ПОЛЬЗОВАТЕЛЬ передаст данные скрипту, а скрипт (второй) - первому.
Но пользователь вообще ничего не может открыть пока работает первый скрипт.

З.Ы. тут все такие умные - я вопрос не понятно задаю?
PM MAIL   Вверх
Fally
Дата 11.7.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не видишь... если я правильно понял твой первый пост, то:
Второй скрипт у тебя работает по времени меньше первого, таким образом получаем...
script1.php:
Код

<?php
//...
$childPID = pcntl_fork();
if(-1 === $childPID) {
    print('Не могу создать дочерний процесс');
    exit;
} elseif($childPID) {
    exec('php path/to/script2.php &'); // Здесь будет выполняться второй скрипт.
} else {
    // Do something
    // А в этой ветке продолжает работать script1.php
}
?>


В файле script2.php уже твоё содержимое... но если у тебя второй скрипт работает по времени больше первого, а первому нужно дождаться того момента, когда завершит работу второй скрипт, тогда копай надо в сторону pcntl_waitpid()...

Если я тебя не правильно понял.. извиняй... корректней задавай вопросы...

P.S. А после слова "раздвоение", мне показалось, что документация по функции даже не читалась

Это сообщение отредактировал(а) Fally - 11.7.2007, 16:44


--------------------
Прежде чем задать вопрос на форуме воспользуйтесь поиском.
user posted image
user posted image
PM MAIL   Вверх
ilyalyu
Дата 11.7.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



все правильно, если ты пытаешься открыть одну и ту же сессию из двух скриптов, то второй скрипт блокируется до тех пор пока не будет закрыта сессия в первом скрипте. сессия закрывается автоматически по завершении работы скрипта, но может быть закрыта и программно. следовательно, если тебя не устраивает данный механизм блокировки, то можно:
1) закрывать сессию в одном из скриптов до его завершения.
1) использовать разные сессии.
2) не использовать сессии.
3) написать свой механизм реализации сессий через cookies, без блокировки.
PM MAIL   Вверх
Jema
Дата 11.7.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо за ответ. но как script2.php получит данные от пользователя?

Добавлено через 5 минут и 29 секунд
Цитата(ilyalyu @  11.7.2007,  16:55 Найти цитируемый пост)
все правильно, если ты пытаешься открыть одну и ту же сессию из двух скриптов, то второй скрипт блокируется до тех пор пока не будет закрыта сессия в первом скрипте. сессия закрывается автоматически по завершении работы скрипта, но может быть закрыта и программно. следовательно, если тебя не устраивает данный механизм блокировки, то можно:
1) закрывать сессию в одном из скриптов до его завершения.
1) использовать разные сессии.
2) не использовать сессии.
3) написать свой механизм реализации сессий через cookies, без блокировки. 

Вот. Спасибо добрый человек. Показал куда копать.
То есть если я сделаю в первом скрипте session_destroy - то второй скрипт у меня отработает? Вот это уже интересно.
Спасибо.

Добавлено через 7 минут и 37 секунд
Вот... кому интересно читать сюда http://ru.php.net/manual/ru/function.session-write-close.php
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

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


 




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


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

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