| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > Многопоточность |
| Автор: Another 9.5.2009, 00:18 |
| Как разбить выполнения скрипта на потоки? |
| Автор: masp 9.5.2009, 00:21 |
| через Мysql например и крон .... например http://anarhist.name/scripts/est-li-mnogopotochnost-v-php/ |
| Автор: nerezus 10.5.2009, 19:28 | ||||
Дать ссылок на википедию, на кучу терминов типа многопоточности, многозадачности, определения процессов и т.д., чтобы не путаться в них? |
| Автор: gta4kv 10.5.2009, 20:23 |
| nerezus, зря ты так прям. Никто не говорит о настоящей многопоточности, а как эмуляция? =) http://php.net/pcntl-fork |
| Автор: nerezus 10.5.2009, 22:00 |
| gta4kv, нельзя. Это процессы. А как же общие переменные, к примеру? пусть 1 поток по циклу увеличивает переменную, а второй ее печатает. + чтобы под виндой работало, т.к. я на винде разрабатываю на ноуте. |
| Автор: gta4kv 10.5.2009, 22:32 |
| Я вообще хз, у меня есть только кусочек теории. Подобными глупостями я на PHP не занимаюсь. |
| Автор: nerezus 11.5.2009, 01:00 | ||
gta4kv,
|
| Автор: icewind 12.5.2009, 14:03 |
| Послушайте nerezus, и не ищите статьи энтузиастов с громкими названиями "МНОГОПОТОЧНОСТЬ НА PHP!!!!" Это по определению не возможно. Если очень нужно, используйте соответствующий инструмент, который обладает подобным функционалом. И не путайте потоки и процессы. От форканья процессов толку много не будет. |
| Автор: mogul82 16.5.2009, 23:11 |
| А мне говорили можно. С пшп 5 мона мол с интерпритатором работать (и изменять код интерпретатора) и там можно отправить кусок кода на др поток. А там уж как операционка захочет. |
| Автор: nerezus 16.5.2009, 23:14 | ||
Если по жизни будешь пытаться выдать "бабка в трамвае сказала" за правду, то ничего не выйдет. Просто совет. |
| Автор: eXed 22.7.2009, 15:30 | ||
| А зачем WEB языку PHP многопоточность? В случаях, когда нужно что делать быстрей и не дожидаться запросов к Вебсерверу? Существует, как сказали выше базы данных и cron, но если очень хочется, можно запускать на сервере подобный скрипт:
правда не факт, что он не съест все ресурсы системы Вот более полное описание данного процесса http://leonid.shevtsov.me/20-09-2008/mnogoprocessovye-demony-na-php/ |
| Автор: nerezus 22.7.2009, 21:03 | ||
Факт в том, что она нужна. Запомни: если что-то не нужно тебе. это не значит, что оно не нужно никому. А еще сходи-ка ты на википедию и почитай определение терминов, а то и дальше будешь путать потоки с процессами. |
| Автор: eXed 23.7.2009, 03:39 | ||||
Хочется одним запросом к скрипту обращаться сразу к 10 сайтам в 10 потоках и хавать новости? Или одним потоком генерить темплейт, а другим контент и на выходе это совмещать. Здорово конечно, но что мы получим при тысячах запросов к таким скриптам, как производить отладку и т.д. ? В данном случае имеется ввиду PHP+WebServer запуск по запросу, а не о резидентном консольном приложении.
Я не путаю понятия, хотя на вики сходил... "Многопоточность (как доктрину программирования) не следует путать ни с многозадачностью, ни с многопроцессорностью, несмотря на то, что операционные системы, реализующие многозадачность, как правило реализуют и многопоточность." |
| Автор: nerezus 23.7.2009, 04:20 | ||||||
Имел то опыт работы с потоками?) |
| Автор: eXed 23.7.2009, 04:29 | ||||
Наткнулся на статью http://seoutils.net/archives/187
Имею опыт программирования на C#. |
| Автор: Riddick 6.8.2009, 09:53 | ||||
| На пхп многопоточности нет ФАКТ. Как вариант по никс*
В этом случае остается контролировать выполнение каждого экземпляра скрипта, что весьма неудобно и этот вопрос я думаю решаем с помощью Ajax (как вариант). Для особо придирчивых уточняю что понятьи поток здесь рассмотрено в контексте "Экземпляр скрипта"; Поехали дальше. Многие пишут под виндовозом. С виндой есть другой вариант - а именно командная строка
В этом примере каждый экземпляр скрипта будет открыт в видимой командной строке, что позволяет смотреть работу скрипта. Вот типа и все. Есть еще вариант запускать экземпляры скрипта через сокеты, где количество сокетов будет равно "количеству потоков"; Да и насчет форков. Сильно не усердствуй с ним на пхп (сильная нагрузка на сервер) - это прерогатива Perl. |
| Автор: nerezus 6.8.2009, 10:30 |
| Riddick, ты путаешь понятия потока и процесса. Это все равно, что путать палец с... мордой. |
| Автор: Riddick 6.8.2009, 10:55 |
| Я смотрел на контекст вопроса ТС, и ему думаю подойдет то что я предложил. А вот как он рассмотрит это - дело уже его. To -> nerezus Я же сказал на пхп многопоточности нет - то что я описал это эмуляция - но смотря чего и как на это смотреть. Если рассматиривать правильно то каждый раз мы порождаем новый процесс - работающий в один поток - отсюда можно сделать вывод (и он правильный)что мы занимаемся не многопоточностью а плодим процессы. С другой стороны если рассмотреть скрипт порождающий процессы (а процесс работает в один поток) основным и в конечном итоге порождающий потоки(пусть с возникновением новых процессов), то выходит что скрипт многопоточен. Я здесь не пытаюсь оспорить понятия многопоточности так как многопоточность должна быть и есть в одном процессе, а у нас процессов столько же сколько и потоков, просто если подойти к вопросу философски то все можно "притянуть за уши"; |
| Автор: nerezus 6.8.2009, 11:28 | ||||
Процессы - это эмуляция потоков? Порой кажется, что я в своей жизни пропустил что-то важное... А может и не я.
|
| Автор: Riddick 6.8.2009, 13:10 |
| |
| Автор: Pori 19.8.2009, 18:40 |
| nerezus, как вариант, юзать темп файл для хранения общих переменных ;) Чего ты так взъелся? Никто ж с тобой не спорит, что нету на PHP многопоточности. Но зайди на любую фриланс биржу - каждому второму заказчику скрипта на PHP подавай многопоточность. Им же не объяснишь =) Вот и приходится выкручиваться как получиться, а не как теоретически правильно ;) |
| Автор: nerezus 19.8.2009, 19:21 | ||
| Pori, и? каждую строчку оборачивать кодом с чтением этого файла? С блокировкой его? Так если он блокируется, многопоточности то и не будет ;) А если не блокируется - то данные испортятся.
|
| Автор: Pori 19.8.2009, 19:34 |
| Конешн с блокировкой, а как иначе? =) Тормозить процесс пока не получит доступ к файлу, а потом вперед. Не известно же в какой момент процессы запросят доступ к файлу. Может, правдо, и повезти - выстроятся в конвейер ;) Да, конечно, это не многопоточность. Да и, как правило, для того, что требуют заказчики с пометкой "должно работать многопоточно" многопоточность совершенно не требуется. Недавно попался мне такой - я предложил в качестве многопоточности запускать скрипт несколько раз по крону - согласился ;) Вот и вся многопоточность на PHP. |
| Автор: nerezus 19.8.2009, 20:08 | ||||
|
| Автор: IZ@TOP 20.8.2009, 11:00 |
Предложим вместо нее девственницу |
| Автор: NewDima 25.8.2009, 17:48 |
| Есть одна интересная http://www.ibm.com/developerworks/ru/library/os-php-multitask/index.html |
| Автор: Pori 27.8.2009, 21:23 |
| ну так мы это, вроде, здесь разобрали. Просто там все структурированно и довольно неплохо написано |