![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
Доброго времени суток
появился такой вопрос, есть действия (работа с БД) которые занимают много времени (от пары минут до пары часов) хотелось бы что запуская на странице процедуру , что бы эта процедура начала выполнятся в другом потоке\процессе , при этом клиенту выдавалось сообщение "идет обчсет" а когда он в другом потоке отработал , можно было запросить результат . может смутно выразился, сорри , но хочется аналог потоков , тредов как на си, такое возможно на php ? Заранее благодарен всем ответившим. -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
Romikgy, не подскажешь чем загрузить базу, хотя бы на 10 минут. Хочу проверить, прежде чем советовать.
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
давай с совета начни ))
ибо я могу загрузить и другой работой )) мне нужно именно 2 рабочий поток .... можно его организовать на пхп? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
http://gearman.org/index.php
Мысли пока сумбурные, маловата квалификация. 1 Пишем клиента на PHP (GearmanClient) 2 Пишем работягу на ... С - не проверял, не знаю. Если на PHP то получалось 3 GearmanWorker по окончании работы пишет результат куда-нибудь 4 Из браузера проверяем этот результат, если есть выводим. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
1. Пишем задание в Queue заданий. 2. Демон или крон хватает задание и выполняет его. Ради нескольких строчек для демона нет смысла ковырять чужие либы. |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
-------------------- Amazing |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
спасибки за ответ
что сие есть ? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Romikgy, очередь.
Не знаком разве со stack/set/list/vector/map/queue/etc понятиями? Т.е. просто тупо пишем в некоторое хранилише(файл/база/общая память и т.д.), работающие по типу очереди. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
nerezus, спасибо
но причем очередь к моему вопросу? и что за демон? это типо из линуха? Добавлено через 3 минуты и 3 секунды
это как я понял для ассинхроной работы с другими сайтами но это не совсем параллелизм (( мож есть еще что то типа такого же? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
и не понятно какие права нужны для запуска proc_open
ибо под виндой у мя туто виснет и все:( -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Решение на поверхности. Не надо никуда рыть. |
||||
|
|||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
pcntl
или даже проще exec('php script.php >mylog.txt &') -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| cha0t1k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 12.4.2010 Репутация: нет Всего: нет |
На практике бывает нужно перенаправить еще stdin : < /dev/null. Или вообще делать вызов через nohup
|
|||
|
||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
Romikgy, видишь куда все повернулось
На мой взгляд только демон есть решение. Вот только Windows портит картину. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
IgorIV, в винде тоже это можно.
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Romikgy, ничего принципиально сложного нету.
У меня есть задача по импорту текстового файла в базу данных. файл довольно большой, база получается тоже неслабая и компьютер на сервере тоже случается что сильно загружен. В итоге само действие по времени занимает до получаса. при этом работа ведется на фоне 30 секундного лимита исполнения php скрипта. схематично это выглядит как запуск скрипта, который периодически в базу данных докладывается о своем прогрессе. Клиент периодически проверяет насколько прогресс успешен, визуализирует прогресс для юзера и, в случае если скрипт подвис - инициирует его заново. сам скрипт в базу данных записывает свое состояние (номер строчки файла экспорта) и продолжается с последней экспортированной строчки. админы скрипят зубами, но пока терпят. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
ksnk, а циферки можно? Какой размер файла и базы.
nerezus, да как бы сомений о демоне под windows нет, просто считаю что разрабатывать надо там где будет работать. |
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
IgorIV, ну это естественно.
Могу выложить скрипт демонизации для debian-based дистров. |
|||
|
||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
nerezus, это поможет ТС? Если да - выкладывай.
|
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
IgorIV, поможет - ему останется написать лишь скрипт с while(1) do_smth();
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
IgorIV, это экспорт csv-прайс листа магазина в базу товаров. база довольно развесистая, на 20-30т товаров. Читалка csv - своя собственная, так как в серверном php соответствующего мода не было поставлено, да и сsv там иногда битый, родная читалка его не всегда правильно понимала... Также для каждой строчки товара выполнялась нетривиальная работа по поиску и прописыванию его в существующую систему категорий.
Это еще кроме затрат на откат и возобновление работы скрипта с "любой строки". вероятнее всего, там много можно сократить и соптимизировать, но мне тогда было интересно реализовать такой долгоисполняемый процесс, так что до нормальной оптимизации дело не дошло ;) -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| IgorIV |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
Romikgy, как успехи?
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 1 Всего: 146 |
пока пытаюсь разобратся с кронами и демонами,
как понимаю это самое правильное решение в данном случае)) ksnk, а вызов ваших ф-ций разбора можно увидеть ? вообще было бывкусно всю реализацию на посмотреть -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |