Вопрос по PHP: эмуляция многопоточности

IL
На сайте с 09.12.2009
Offline
128
2364

Приветствую форумчан!

Возникла такая сложность: требуется из одного скрипта запустить одновременно несколько копий другого скрипта с разными параметрами. Первый скрипт запускается по крону (ну это неважно).

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

Кто может помочь с этой задачкой? :smoke:

SJ
На сайте с 16.03.2008
Offline
78
#1

Тю. Гугл выдаст массу полезного по запросу "Эмуляция многопоточности в php". Например, через CURL. Дергаете свой скрипт из другого скрипта сколько надо раз с какими надо параметрами...

Любимый хостинг (http://beget.ru?id=2902) How can we grow old when the soundtrack of our lives is rock-n-roll?
IL
На сайте с 09.12.2009
Offline
128
#2

да Гугл-то выдает массу всего, в том числе и через curl, но разобраться не могу.

Например, какой способ лучше??? (менее затратен в плане ресурсов сервера)

SJ
На сайте с 16.03.2008
Offline
78
#3

Проведите эксперимент :)

"Ресурсы сервера" вобщем-то на сам скрипт (и интерпритатор) тратятся, а на его вызов - ничтожные доли %.

artalex
На сайте с 08.12.2005
Offline
144
#4

допустим, по крону вы запускаете скрипт cron.php

вам необходимо положить в него сценарий, который запустит, допустим, 100 копий скрипта go.php и передаст в него какие-то параметры... Для этого можно использовать system(), например в cron.php пишем:

for($i=0; $i<100; $i++)
{
system("cd /path/to/your/folder; /usr/local/bin/php go.php $perem1 $perem2 > log_$i.txt &");
}

Здесь:

/path/to/your/folder - путь к папке скрипта от корня сервера

/usr/local/bin/php - путь к PHP (обычно такой и есть)

$perem1 $perem2 и так далее - переменные, которые вам нужно посылать в скрипт go.php

log_$i.txt - будут созданы 100 лог-файлов, в каждый из которых будет писаться вывод соответствующего "потока"

Этот цикл запустить 100 экземпляров скрипта go.php

Переменные, посланные в сценарий ($perem1 $perem2) доступны в go.php как $argv[1] $argv[2] и т.д.

Попробуйте... если не получится - стучите в асю мне... помогу.

IL
На сайте с 09.12.2009
Offline
128
#5
artalex:
допустим, по крону вы запускаете скрипт cron.php
вам необходимо положить в него сценарий, который запустит, допустим, 100 копий скрипта go.php и передаст в него какие-то параметры... Для этого можно использовать system(), например в cron.php пишем:





Здесь:
/path/to/your/folder - путь к папке скрипта от корня сервера
/usr/local/bin/php - путь к PHP (обычно такой и есть)
$perem1 $perem2 и так далее - переменные, которые вам нужно посылать в скрипт go.php
log_$i.txt - будут созданы 100 лог-файлов, в каждый из которых будет писаться вывод соответствующего "потока"

Этот цикл запустить 100 экземпляров скрипта go.php
Переменные, посланные в сценарий ($perem1 $perem2) доступны в go.php как $argv[1] $argv[2] и т.д.

Попробуйте... если не получится - стучите в асю мне... помогу.

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

[Удален]
#6

крон задача

* * * * * /etc/php /scripts/test.php

test.php:

`/etc/php /scripts/somescript.php`;

вот и запустили.

T
На сайте с 16.02.2006
Offline
98
#7

http://ru.php.net/pcntl_fork форк процесса, а дальше exec. у меня так. но у меня эти скрипты запускаются с помощью еще одного демона (trickle) для ограничения скорость на поток, по-этому через exec только

icq - 9225229 Web-payment.ru/monitoring (http://web-payment.ru/monitoring) - лучший мониторинг курсов обменных пунктов
[Удален]
#8

Toshka, так он текущий процесс форкает.

требуется из одного скрипта запустить одновременно несколько копий другого скрипта с разными параметрами

за trickle списбо

UPD1: ну он не очень качественно, прям сказать органичивает bandwidth.

Запустил trickle -d 3 wget http://файл на 6 метров

Скачет - иногда даже 8кб выдает.

UPD2: trickle аццтой :) буду tc пользоваться

TK
На сайте с 19.10.2010
Offline
0
#9

Например через асинхронные сокеты, посмотреть можно здесь.

T
На сайте с 16.02.2006
Offline
98
#10
So1:
Toshka, так он текущий процесс форкает.


за trickle списбо

UPD1: ну он не очень качественно, прям сказать органичивает bandwidth.
Запустил trickle -d 3 wget http://файл на 6 метров
Скачет - иногда даже 8кб выдает.

UPD2: trickle аццтой :) буду tc пользоваться

текущий форкает:) что плохого?

по поводу скорости - меня устраивает. при небольший значения скорость будет скакать в больших пределах. у меня при 1мб на поток все нормально😂

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий