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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> $_SESSION + php cli скрипт 
:(
    Опции темы
alligator
Дата 26.11.2014, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем доброго времени суток:
Есть проблема с использованием сессий в cli
Сейчас имею 2 скрипта:
скрипт 1 выполняется из браузера
Код

session_start();
$exec_update='/usr/bin/php ./action_cli.php geturls '.session_id().'';
exec("nohup ".$exec_update." >/dev/null 2>&1 &");
echo json_encode(array($_SESSION['update_pid']));

скрипт 2 запускается из скрипта 1
Код

if($argc>1 && $argv[1] =='geturls'){
  session_id($argv[2]);
  session_start();
    
    $_SESSION['update_pid']=getmypid();
    print_r($_SESSION);
    $cbrf_urls= $Deposit->CLI_LoadBankUrls();
    $Deposit->mSQL_SaveBankUrls($cbrf_urls);
    unset($_SESSION['update_pid']);
}

Проблема в том что  в скрипте 2 я вижу что появилась 
$_SESSION['update_pid']
а скрипте 1 нет
почему так происходит?

Забыл добавить что скрипт начинает жутко висеть....

Задача, передать скрипту 1 pid запущенного скрипта....


Это сообщение отредактировал(а) alligator - 26.11.2014, 13:50
PM MAIL   Вверх
Vardoulacha
Дата 26.11.2014, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



О_о скрипт 2 под конец убивает только что созданную сессию, в этом причина?
Код

unset($_SESSION['update_pid']);

PM MAIL   Вверх
sQu1rr
Дата 26.11.2014, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А вы уверены что скрипт успевает запустится и записать свой pid прежде чем первый скрипт завершается?
PM MAIL Skype GTalk   Вверх
Vardoulacha
Дата 26.11.2014, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(sQu1rr @  26.11.2014,  14:33 Найти цитируемый пост)
А вы уверены что скрипт успевает запустится

Кстати да, никакого ожидания нет, php же не js выполняется построчно, вроде так нас учили когда-то давно ))

Но меня больше всего смущает unset
PM MAIL   Вверх
sQu1rr
Дата 26.11.2014, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Vardoulacha @  26.11.2014,  12:37 Найти цитируемый пост)
Кстати да, никакого ожидания нет, php же не js выполняется построчно, вроде так нас учили когда-то давно ))

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

Цитата(Vardoulacha @  26.11.2014,  12:37 Найти цитируемый пост)
Но меня больше всего смущает unset 

Идея автора, при запуске записать pid, при окончании - удалить, что бы можно было эйджексом например смотреть завершился процесс или нет. По крайней мере так я понял и это следует из кода

1. Запускаем первый скрипт
2. Запускаем второй скрипт записывая пид а сешн
3. Посылаем запрос узнать, закончился процесс или нет
4. ???
5. Профит
PM MAIL Skype GTalk   Вверх
alligator
Дата 26.11.2014, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(sQu1rr @ 26.11.2014,  15:55)
Цитата(Vardoulacha @  26.11.2014,  12:37 Найти цитируемый пост)
Кстати да, никакого ожидания нет, php же не js выполняется построчно, вроде так нас учили когда-то давно ))

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

Цитата(Vardoulacha @  26.11.2014,  12:37 Найти цитируемый пост)
Но меня больше всего смущает unset 

Идея автора, при запуске записать pid, при окончании - удалить, что бы можно было эйджексом например смотреть завершился процесс или нет. По крайней мере так я понял и это следует из кода

1. Запускаем первый скрипт
2. Запускаем второй скрипт записывая пид а сешн
3. Посылаем запрос узнать, закончился процесс или нет
4. ???
5. Профит

Да абсолютно верно....
проблема найдена:
пока скрипт 2 выполняется происходит deadlock и скрипт 1 не может читать данные из сессии:
пробовал сделать так:
Код

if($argc>1 && $argv[1] =='geturls'){
  session_id($argv[2]);
  session_start();
    
    //$exec_update='/usr/bin/php ./action_cli.php geturls';
    //$pid=shell_exec("pidof ".$exec_update."");
    $_SESSION['update_pid']=getmypid();
    print_r($_SESSION);
    session_write_close();
    $cbrf_urls= $Deposit->CLI_LoadBankUrls($pid);
    $Deposit->mSQL_SaveBankUrls($cbrf_urls);
    unset($_SESSION['update_pid']);
}


Теперь сессия читается скриптом 1 , но не удаляется =((

Это сообщение отредактировал(а) alligator - 26.11.2014, 15:13
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.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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