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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многопоточность 
:(
    Опции темы
Another
Дата 9.5.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Как разбить выполнения скрипта на потоки?
PM MAIL   Вверх
masp
Дата 9.5.2009, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



через Мysql  например и крон ....
например
http://anarhist.name/scripts/est-li-mnogopotochnost-v-php/


Это сообщение отредактировал(а) masp - 9.5.2009, 00:23
PM MAIL ICQ   Вверх
nerezus
  Дата 10.5.2009, 19:28 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата

Как разбить выполнения скрипта на потоки?
 Никак. Глупо задавать такие вопросы в раздел, не умея использовать поиск. Тогда бы и тему не пришлось создавать.

Цитата

через Мysql  например и крон ....
например
 Никак. Нельзя эмулировать shared state.
Дать ссылок на википедию, на кучу терминов типа многопоточности, многозадачности, определения процессов и т.д., чтобы не путаться в них?


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


Walking around mad.
***


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

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



nerezus, зря ты так прям. Никто не говорит о настоящей многопоточности, а как эмуляция? =)

http://php.net/pcntl-fork

Это сообщение отредактировал(а) gta4kv - 10.5.2009, 20:23
PM MAIL   Вверх
nerezus
Дата 10.5.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



gta4kv, нельзя. Это процессы.
А как же общие переменные, к примеру?

пусть 1 поток по циклу увеличивает переменную, а второй ее печатает.
+ чтобы под виндой работало, т.к. я на винде разрабатываю на ноуте.
    




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


Walking around mad.
***


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

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



Я вообще хз, у меня есть только кусочек теории. Подобными глупостями я на PHP не занимаюсь.
PM MAIL   Вверх
nerezus
Дата 11.5.2009, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



gta4kv
Цитата

Я вообще хз, у меня есть только кусочек теории. 
 Поверь, что это невозможно.


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

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



Послушайте nerezus, и не ищите статьи энтузиастов с громкими названиями "МНОГОПОТОЧНОСТЬ НА PHP!!!!" Это по определению не возможно. Если очень нужно, используйте соответствующий инструмент, который обладает подобным функционалом. И не путайте потоки и процессы. От форканья процессов толку много не будет. 


--------------------
user posted image
PM MAIL Skype   Вверх
mogul82
Дата 16.5.2009, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А мне говорили можно. 
С пшп 5 мона мол с интерпритатором работать (и изменять код интерпретатора) и там можно отправить кусок кода на др поток. А там уж как операционка захочет.

Это сообщение отредактировал(а) mogul82 - 16.5.2009, 23:11
PM MAIL   Вверх
nerezus
Дата 16.5.2009, 23:14 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата

А мне говорили можно. 
 А мне говорили, что в москве кур доят.

Если по жизни будешь пытаться выдать "бабка в трамвае сказала" за правду, то ничего не выйдет. Просто совет.


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


Новичок



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

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



А зачем WEB языку PHP многопоточность? 

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

Существует, как сказали выше базы данных и cron, но если очень хочется, можно запускать на сервере подобный скрипт:

Код

while(true)
{
if( DB->SELECT('etc') )
{

}
sleep(10000);
}


правда не факт, что он не съест все ресурсы системы smile 

Вот более полное описание данного процесса Многопроцессовые демоны на PHP

Это сообщение отредактировал(а) eXed - 22.7.2009, 15:34
PM MAIL   Вверх
nerezus
Дата 22.7.2009, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата

А зачем WEB языку PHP многопоточность? 
 Новости агрегировать, к примеру. Куча вариантов.
Факт в том, что она нужна.

Запомни: если что-то не нужно тебе. это не значит, что оно не нужно никому.

А еще сходи-ка ты на википедию и почитай определение терминов, а то и дальше будешь путать потоки с процессами.


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


Новичок



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

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



Цитата

 Новости агрегировать, к примеру. Куча вариантов.
Факт в том, что она нужна.


Хочется одним запросом к скрипту обращаться сразу к 10 сайтам в 10 потоках и хавать новости?

Или одним потоком генерить темплейт, а другим контент и на выходе это совмещать. Здорово конечно, 
но что мы получим при тысячах запросов к таким скриптам, как производить отладку и т.д. ?
В данном случае имеется ввиду PHP+WebServer запуск по запросу, а не о резидентном консольном приложении.

Цитата

... дальше будешь путать потоки с процессами. 


Я не путаю понятия, хотя на вики сходил... "Многопоточность (как доктрину программирования) не следует путать ни с многозадачностью, ни с многопроцессорностью, несмотря на то, что операционные системы, реализующие многозадачность, как правило реализуют и многопоточность."  smile "Шла Саша по шоссе и сосала сушку"  smile 
PM MAIL   Вверх
nerezus
Дата 23.7.2009, 04:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата

Хочется одним запросом к скрипту обращаться сразу к 10 сайтам в 10 потоках и хавать новости?
 Да. И потом все полученное в 1 массив для дальнейшей обработки.

Цитата

но что мы получим при тысячах запросов к таким скриптам, 
 Тысячах? Достаточно нескольких десятков потоков чтобы оценить возросшую производительность

Цитата

как производить отладку и т.д. ?
 Не поверишь. С помощью дебаггера.
Имел то опыт работы с потоками?)


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


Новичок



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

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



Цитата

 Да. И потом все полученное в 1 массив для дальнейшей обработки.


Наткнулся на статью В статье описана организация мультизапросов средствами PHP с использованием библиотеки cURL

Цитата

Имел то опыт работы с потоками?) 


Имею опыт программирования на C#.
PM MAIL   Вверх
Riddick
Дата 6.8.2009, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



На пхп многопоточности нет ФАКТ.
Как вариант по никс*
Код

<?php
Error_Reporting(E_ALL & ~E_NOTICE);
ini_set ('max_execution_time', '0');
ini_set ('max_time_limit', '0');

$thread='10';//Количество потоков
for ($i=1; $i <= $thread; $i++){
       exec("sript.php?thread=$i);//Запуск скрипта в фоновом режиме с указанием потока
       flush();
}
echo "Процесс стартанул";
?>

В этом случае остается контролировать выполнение каждого экземпляра скрипта, что весьма неудобно и этот вопрос я думаю решаем с помощью Ajax (как вариант). Для особо придирчивых уточняю что понятьи поток здесь рассмотрено в контексте "Экземпляр скрипта";
Поехали дальше. Многие пишут под  виндовозом. С виндой есть другой вариант - а именно командная строка
Код

<?php
Error_Reporting(E_ALL & ~E_NOTICE);
ini_set ('max_execution_time', '0');
ini_set ('max_time_limit', '0');

$start = "start /MIN z:/php5/php.exe -c z:/php5/php.ini -f  sript.php?thread={thread}"; //Путь к интерпритатору+путь к ини+путь к скрипту
$thread='10';//Количество потоков
for ($i=1; $i <= $thread; $i++){
       $thread = str_replace("{thread}", "$i", $start);//Получаем строку для запуска экземпляра скрипта
       pclose(popen($thread, 'r'));//Запускаем экземпляр скрипта
       flush();
}
echo "Процесс стартанул";
exit();

В этом примере каждый экземпляр скрипта будет открыт в видимой командной строке, что позволяет смотреть работу скрипта.
Вот типа и все.
Есть еще вариант запускать экземпляры скрипта через сокеты, где количество сокетов будет равно "количеству потоков";

Да и насчет форков. Сильно не усердствуй с ним на пхп (сильная нагрузка на сервер) - это прерогатива Perl.
 smile 
PM MAIL   Вверх
nerezus
Дата 6.8.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Riddick, ты путаешь понятия потока и процесса. Это все равно, что путать палец с... мордой.


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


Новичок



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

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



Я смотрел на контекст вопроса ТС, и ему думаю подойдет то что я предложил.
А вот как он рассмотрит это - дело уже его. 
To -> nerezus
Я же сказал на пхп многопоточности нет - то что я описал это эмуляция - но смотря чего и как на это смотреть. Если рассматиривать правильно то каждый раз мы порождаем новый процесс - работающий в один поток - отсюда можно сделать вывод (и он правильный)что мы занимаемся не многопоточностью а плодим процессы. С другой стороны если рассмотреть скрипт порождающий процессы (а процесс работает в один поток) основным и в конечном итоге порождающий потоки(пусть с возникновением новых процессов), то выходит что скрипт многопоточен.
Я здесь не пытаюсь оспорить понятия многопоточности так как многопоточность должна быть и есть в одном процессе, а у нас процессов столько же сколько и потоков, просто если подойти к вопросу философски то все можно "притянуть за уши"; 
PM MAIL   Вверх
nerezus
Дата 6.8.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата

то что я описал это эмуляция

Процессы - это эмуляция потоков? Порой кажется, что я в своей жизни пропустил что-то важное... А может и не я.

Цитата

то выходит что скрипт многопоточен.
 Не выходит и даже не входит. Где shared state? Измененные переменные в одном "потоке" изменятся в другом? Это основной признак тредов, и он не выполняется. Так что говорить о какой-то "эмуляции" просто некорректно.


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


Новичок



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

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



 smile 
PM MAIL   Вверх
Pori
Дата 19.8.2009, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



nerezus, как вариант, юзать темп файл для хранения общих переменных ;) 

Чего ты так взъелся? Никто ж с тобой не спорит, что нету на PHP многопоточности. Но зайди на любую фриланс биржу - каждому второму заказчику скрипта на PHP подавай многопоточность. Им же не объяснишь =) Вот и приходится выкручиваться как получиться, а не как теоретически правильно ;)
PM MAIL   Вверх
nerezus
Дата 19.8.2009, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Pori, и? каждую строчку оборачивать кодом с чтением этого файла? С блокировкой его?
Так если он блокируется, многопоточности то и не будет ;)

А если не блокируется - то данные испортятся.

Цитата

Вот и приходится выкручиваться как получиться, а не как теоретически правильно ;)
 эффекта не будет


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


Шустрый
*


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

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



Конешн с блокировкой, а как иначе? =)

Тормозить процесс пока не получит доступ к файлу, а потом вперед. Не известно же в какой момент процессы запросят доступ к файлу. Может, правдо, и повезти - выстроятся в конвейер ;)

Да, конечно, это не многопоточность. Да и, как правило, для того, что требуют заказчики с пометкой "должно работать многопоточно" многопоточность совершенно не требуется. Недавно попался мне такой - я предложил в качестве многопоточности запускать скрипт несколько раз по крону - согласился ;) Вот и вся многопоточность на PHP.
PM MAIL   Вверх
nerezus
Дата 19.8.2009, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата

Да, конечно, это не многопоточность.
 ЧТД.

Цитата

Да и, как правило, для того, что требуют заказчики с пометкой "должно работать многопоточно" многопоточность совершенно не требуется.
 А если потребуют бабушку прирезать?)


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


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

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



Цитата(nerezus @  19.8.2009,  21:08 Найти цитируемый пост)
А если потребуют бабушку прирезать?) 

Предложим вместо нее девственницу  smile И не прирезать...  smile 


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
NewDima
Дата 25.8.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

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



Есть одна интересная вещь
PM ICQ   Вверх
Pori
Дата 27.8.2009, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну так мы это, вроде, здесь разобрали. Просто там все структурированно и довольно неплохо написано
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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