- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
<?php
$strings = array();
$strings[] = "10_strings_0";
$strings[] = "10_strings_1x";
$strings[] = "10_strings_2";
$strings[] = "10_strings_3";
$strings[] = "10_strings_4x";
$strings[] = "10_strings_5x";
$strings[] = "10_strings_6";
$strings[] = "10_strings_7x";
$strings[] = "10_strings_8";
$strings[] = "10_strings_9";
// СПИСОК СТРОК ИЗ 100 СТРОК В КОТОРЫХ БУДЕТ ОСУЩЕСТВЛЯТЬСЯ ПОИСК СТРОК ИЗ СПИСКА $strings
for ($counter=0; $counter<100; $counter++)
{
$check_strings[] = "10_strings_".$counter;
}
// Временная папка - папка со скриптом
// создание vbs файлов
for ($strings_c=0; $strings_c<sizeof($strings); $strings_c++)
{
$file = fopen($strings[$strings_c].'.vbs', 'w');
fwrite($file, 'Set Program = Wscript.CreateObject("Wscript.Shell")'.PHP_EOL.'Program.Run("'.$strings[$strings_c].'.bat'.'")'.PHP_EOL.'Wscript.Quit');
fclose($file);
}
// создание bat файлов
$interpreter_root = 'C:\xampp\php\php.exe'; // путь к PHP интерпретатору
for ($strings_c=0; $strings_c<sizeof($strings); $strings_c++)
{
$file = fopen($strings[$strings_c].'.bat', 'w');
fwrite($file, $interpreter_root.' '.$strings[$strings_c].'.php');
fclose($file);
}
// создание php файлов
for ($strings_c=0; $strings_c<sizeof($strings); $strings_c++) {
$code = '<?php
$string = \''.$strings[$strings_c].'\'; // строка для проверки, в каждом экземпляре своя
for ($counter=0; $counter<100; $counter++)
{
$check_strings[] = "10_strings_".$counter;
}
shuffle($check_strings);
$ok = false;
for ($check_strings_c=0; $check_strings_c<sizeof($check_strings); $check_strings_c++)
{
if ($string == $check_strings[$check_strings_c])
{
$ok = true;
break;
}
}
if ($ok == true)
{
$file = fopen("'.$strings[$strings_c].'_ok.txt", "w");
fclose($file);
}
?>';
$file = fopen($strings[$strings_c].'.php', 'w');
fwrite($file, $code);
// создание bat файлов
// создание php файлов
даешь, млять, кодогенерацию!
убейте кто-нибудь автора шыдевра
удивительно, но так никто не поступает - парадокс?
кстати програмист тем и отличается от кодера, что пытается выйти за рамки документированных возможностей
>кстати програмист тем и отличается от кодера, что пытается выйти за рамки документированных возможностей
за такое потом очень больно бьют, ты пока этого не осознаешь, ввиду никакого опыта, но лучше сразу отвыкай.
пфхахаха
Кстати я думаю что наоборот. Хороший программист выбирает технологию под задачу, а кодер старается решить задачу на единственной, известной ему технологии.
Впринципе, можно и шурупы стамеской забивать. Но это -- хреновое решение.
PHP разрабатывался как средство быстрого построения веб-страничек. В нем нет многопоточности, потому что среднее время жизни PHP скрипта -- меньше секунды.
Если бы Вы писали на джаве или .net например, то Вам бы не пришлось юзать внешние сервисы, трогать операционку и делать другие странные вещи. Вы бы просто создали объект, вызвали у него метод, и Ваш код стал бы работать в несколько потоков))
К возможности запуска внешних процессов (который есть почти в любом языке, включая .bat файлы) оно отношения не имеет
почему это не имеет отношения к многозадачности (локальное распаралеливание) если скорость программ реально увеличивается в разы ?
если в краце -- в одном процессе работает N потоков. У них общая куча, но разный стек. В каждом процессе есть как минимум 1 поток.
Когда в одном процессе работает несколько потоков -- это и называется многопоточностью.
Запуск N процессов не есть многопоточность.
А многозадачностью называют умение операционки (и процессора) запускать несколько задач, и переключатся между ними так, что бы пользователь думал что они выполняются постоянно.
Ключевые слова: thread
короче я говорю о возможности ускорить работу программы за счёт одновременного выполнения простых преобразований
как это правильно назвать ?
А зачем так сложно? Скрипт-хост, .batник...
В пыхе обычного fork нету что ли?
Кстати, что такое "простые преобразования"? Это какой-то термин из вышки?
> .batник...
ну ты понел какая ось =)
это не просто запуск процесса, а создание его точной копии
Вы правы
http://netfaq.ru/php/php_pcntl_fork
Note:
Currently, this module will not function on non-Unix platforms (Windows)."
кто бы сомневался)
Ваще-то на винде есть кусочек подсистемы posix (может там и fork есть), но так как с подсистема может быть только одна, а без win32api трудно что либо написать -- под posix не пишут на виндах.
Даёшь генератор говнокода!
связка (основной php скрипт)-bat-vbs-(дочерний php скрипт) позволяет запустить n потоков, каждый из которых будет выполнять простое действие, ввиду одновременности их исполнения, имеем реальный прирост поизводительности
Список строк из 100 строк, в которых строки являются строками, в которых построчно ищутся строки из списка строк в строковом представлении строчными буквами.
.....................
fclose($file);
}
// запуск потоков
for ($strings_c=0; $strings_c<sizeof($strings); $strings_c++)
{
exec($strings[$strings_c].'.vbs');
sleep(1);
@unlink($strings[$strings_c].'.php');
@unlink($strings[$strings_c].'.vbs');
@unlink($strings[$strings_c].'.bat');
}
// далее идёт обработка текстовых файлов с именами 10_strings_9_ok наличие котрых говорит о том что например строка 10_strings_9 найдена в списке строк из ста трок (см. выше)
// в текстовых файлах можно возвращать текстовые данные которые будут парсится основным скриптом и использоваться для дадьнейшей работы
?>
ой как все запущено..
ппц начинается от того, что никакие это не 'потоки' (threads? сраная рашкинская терминология) и заканчивается слипами (нах?) и засобачеными операторами.
задача была поставлена, задача решена
согласен что на других языках решение более красивое, но для моих задач подходит ... поэтому я просто поделился своим решением (на другом форуме (а сюда постил не я))
скрипты работают в разы быстрее
что, впрочем, уже обсуждалось.
подскажите, кто знает, какой термин будет в данном случае более правильным ? локальное распаралеливание ?
> Список строк из 100 строк, в которых строки являются строками, в которых построчно ищутся строки из списка строк в строковом представлении строчными буквами.
список из десяти строк вверху, которые нужно найти в списке из ста строк (которые создаются в цикле) всего лишь простой задачи, которая поддаётся распралеливанию
как вам такой паллиативчик, коллеги?
LOL, butthurt
или
NO, U!!!1
:-P
а вообще я не верю, что такое бывает
это чей-то дурной сон
да?
C:\xampp\php\php.exe (причем хардкодом)
Wscript.CreateObject
BATники
зачетный кроссплат
http://govnokod.ru/4096#comment44537
а между собой им зачем общаться ? изначально подразумевается что каждый дочерний процесс выполняют заранее определённую простую функцию, так что зачем им между собой общаться ?
facepalm.010
и я ж просил не сфейлите http://govnokod.ru/4042#comment43735, так еще и в треде объявился некий programer, который вообще не в курсах, что такое 4096
кстати интересно кто сгетил 44444 коментарий??
ЗЫ
http://gofuckbiz.com/showthread.php?t=17406&page=12
ага. и педалит.
>делаю потоки форками на пхп и не парюсь, для большинства задач хватает
потоки(!) форками - ай, малаца
>(это касается даже своих спамилок)
спамер детектед
>конечно есть свои минусы, но зато как удобно и привычно!
привычный и такой родной кактус
>питон пытался колупать но это не мое, интерфейс для серверного софта все равно нужно делать на пхп )))
ололо ниасилил?
>а про "распространенность" питона на дешевых хостингах и говорить не приходится
нищеброды отакуэ
qazxcvbnm
Максим Русланов
[email protected]
http://otvet.mail.ru/mail/max91020791/
http://my.mail.ru/mail/max91020791/
http://vkontakte.ru/id15156119
Откуда: Россия, Южный ФО, Ставропольский край, Ставрополь
для каждого сайта у меня отдельные ники
дальнейшие поиски тут - google.com/search?hl=en&q=qazxcvbnm&lr=eng
по сабжу - а почему никто не оценит нестандартность подхода ? где умиление ?
а сколько накладных ресурсов въебывается... странно, как вообще 'ускорение' получил.
запили бенчи
http://www.govnokod.ru/4096#comment44574
proof me wrong
(нормальные бенчи - это когда как минимум репрезентативность соблюдена)
у тебя еще и глобальное есть?
залей на обменник сорцы и исходные данные теста (всего один тест? я же предупредил про репрезентативность).
только найти бы учебные примеры для простых задач (типа работа с массивами, импорт тектовых файлов, обработка строк, и конечно пример распараллеливания ...)
я php начинал учить сразу с практических задач (опыт програмирования был)
это не типичные для него задачи.
начать лучше с мануала Джо Армстронга, параллельно пробежаться по пи-исчислению/исчислению коммуникационных систем
ну в принципе можно на erlang сравнивать строки или искать вхождения ?
programer12345 > работа с массивами, импорт тектовых файлов, обработка строк
xXx_totalwar > это не типичные для него задачи
так можно с помощью erlang сравнивать один список строк с другим списком и искать совпадения ?
и как ? если обработка массивов "нетипичная задача"
уже сказал, что можно.
>"нетипичная задача"
давай ты на php gui'ёвые проги писать будешь. неудобно? это и есть нетипичное применение языка.
я же не сказал, что это "принципиально невозможно".
почитай Армстронга, там все доступно изложено.