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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многопоточность 
:(
    Опции темы
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   Вверх
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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