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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание вторичного потока 
:(
    Опции темы
Romikgy
Дата 14.4.2010, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Доброго времени суток smile

появился такой вопрос,

есть действия (работа с БД) которые занимают много времени (от пары минут до пары часов)
хотелось бы что запуская на странице процедуру , что бы эта процедура начала выполнятся в другом потоке\процессе ,
при этом клиенту выдавалось сообщение "идет обчсет"
а когда он в другом потоке отработал , можно было запросить результат .

может смутно выразился, сорри , но хочется аналог потоков , тредов как на си, такое возможно на php ?

Заранее благодарен всем ответившим.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
IgorIV
Дата 14.4.2010, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Romikgy, не подскажешь чем загрузить базу, хотя бы на 10 минут. Хочу проверить, прежде чем советовать.
PM MAIL   Вверх
Romikgy
Дата 14.4.2010, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



давай с совета начни ))
ибо я могу загрузить и другой работой ))
мне нужно именно 2 рабочий поток .... можно его организовать на пхп?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
IgorIV
Дата 14.4.2010, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



http://gearman.org/index.php
Мысли пока сумбурные, маловата квалификация.
1 Пишем клиента на PHP (GearmanClient)
2 Пишем работягу на ... С - не проверял, не знаю. Если на PHP то получалось smile
3 GearmanWorker по окончании работы пишет результат куда-нибудь
4 Из браузера проверяем этот результат, если есть выводим. 
PM MAIL   Вверх
nerezus
Дата 15.4.2010, 03:17 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



Цитата

такое возможно на php ?
 Нет.

1. Пишем задание в Queue заданий.
2. Демон или крон хватает задание и выполняет его.

Ради нескольких строчек для демона нет смысла ковырять чужие либы.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MoLeX
Дата 15.4.2010, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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





--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 15.4.2010, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



спасибки за ответ smile (уже гугл мучаю)
Цитата(nerezus @  15.4.2010,  02:17 Найти цитируемый пост)
1. Пишем задание в Queue заданий.

что сие есть ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Вселенский отказник
****


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

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



Romikgy, очередь.

Не знаком разве со stack/set/list/vector/map/queue/etc понятиями?

Т.е. просто тупо пишем в некоторое хранилише(файл/база/общая память и т.д.), работающие по типу очереди.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Romikgy
Дата 15.4.2010, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



nerezus, спасибо 
но причем очередь к моему вопросу?
и что за демон? это типо из линуха?

Добавлено через 3 минуты и 3 секунды
Цитата(MoLeX @ 15.4.2010,  04:38)
на вскидку 
http://www.ibm.com/developerworks/ru/libra...task/index.html

это как я понял для ассинхроной работы с другими сайтами 
но это не совсем параллелизм (( 
мож есть еще что то типа такого же?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



и не понятно какие права нужны для запуска proc_open
ибо под виндой у мя туто виснет и все:(


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Вселенский отказник
****


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

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



Цитата

и что за демон? это типо из линуха?
 Демон - процесс, работающий в фоне. Как сделать? Да хоть while(true) serve_next_request();

Цитата

и не понятно какие права нужны для запуска proc_open
 Зачем? Оно тебе не надо. Просто в консоли запусти скрипт обработчика.

Решение на поверхности. Не надо никуда рыть.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Fortop
Дата 15.4.2010, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



pcntl
или даже проще
exec('php script.php  >mylog.txt &')


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
cha0t1k
Дата 15.4.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



На практике бывает нужно перенаправить еще stdin :   < /dev/null. Или вообще делать вызов через nohup
PM MAIL   Вверх
IgorIV
Дата 15.4.2010, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Romikgy, видишь куда все повернулось smile Демоны, кроны ...
На мой взгляд только демон есть решение. Вот только Windows портит картину. smile С линуксом никак?
PM MAIL   Вверх
nerezus
Дата 15.4.2010, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



IgorIV, в винде тоже это можно.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
ksnk
Дата 15.4.2010, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Romikgy, ничего принципиально сложного нету.
У меня есть задача по импорту текстового файла в базу данных. файл довольно большой, база получается тоже неслабая и компьютер на сервере тоже случается что сильно загружен. В итоге само действие по времени занимает до получаса. при этом работа ведется на фоне 30 секундного лимита исполнения php скрипта.

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

админы скрипят зубами, но пока терпят.  smile 




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


Опытный
**


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

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



ksnk, а циферки можно? Какой размер файла и базы.

nerezus, да как бы сомений о демоне под windows нет, просто считаю что разрабатывать надо там где будет работать.
PM MAIL   Вверх
nerezus
Дата 15.4.2010, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



IgorIV, ну это естественно.
Могу выложить скрипт демонизации для debian-based дистров.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
IgorIV
Дата 15.4.2010, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



nerezus, это поможет ТС? Если да - выкладывай.
PM MAIL   Вверх
nerezus
Дата 15.4.2010, 21:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


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

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



IgorIV, поможет - ему останется написать лишь скрипт с while(1) do_smth();

Код

#! /bin/bash
# nerezus, http://HungeR.su/, 2010

exe="sudo -u nerezus php /home/nerezus/phpchat/phpchat.php" # заменить это
proc="phpchat.php" # и это

case "$1" in
start)
$exe &>/dev/null &
;;
stop)
kill -9 `ps -aef | grep $proc | grep -v grep | awk '{print $2}'`
;;
restart)
$0 stop
$0 start
;;
status)
ps aux | grep $proc | grep -v grep
;;
*)
echo $"Usage: $0 {start|stop|status|restart}"
exit 1
esac



--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
ksnk
Дата 15.4.2010, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



IgorIV, это экспорт csv-прайс листа магазина в базу товаров. база довольно развесистая, на 20-30т товаров. Читалка csv - своя собственная, так как в серверном php соответствующего мода не было поставлено, да и сsv там иногда битый, родная читалка его не всегда правильно понимала... Также для каждой строчки товара выполнялась нетривиальная работа по поиску и прописыванию его в существующую систему категорий. 
Это еще кроме затрат на откат и возобновление работы скрипта с "любой строки".
 
вероятнее всего, там много можно сократить и соптимизировать, но мне тогда было интересно реализовать такой долгоисполняемый процесс, так что до нормальной оптимизации дело не дошло ;)


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


Опытный
**


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

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



Romikgy, как успехи?
PM MAIL   Вверх
Romikgy
Дата 19.4.2010, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



пока пытаюсь разобратся с кронами и демонами,
как понимаю это самое правильное решение в данном случае))
ksnk, а вызов ваших ф-ций разбора можно увидеть ?
вообще было бывкусно всю реализацию на посмотреть  smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1453 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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