Вот и получается, что для того что бы сделать это на PHP с этим PHP-классом мне нужно лишь поправить его, а для gearman нужно будет поправить исходник и библиотеку, линковать с PHP и так далее.
Ответил: отдаёт WORK_DATA, но сервер их игнорирует.
В версии 0.13 смотрите (cd ./libgearman-server):
1) Добавление задачи в server.c, стр 272: server_client = NULL;
2) Обработка WORK_DATA в server.c, 485,
3) Выполнение _server_queue_work_data, добавлине данных в очередь, проходит по списку server_client. См. server.c стр. 959.
Не умеет, я посмотрел код. Если вы запускаете задачу в BG, для неё просто не создаётся структура хранящая обмен между клиентом и сервером, в которую данные WORK_DATA записываются.
Нет, вроде это делает GET_STATUS, умеет отдавать процент от выполненного. Нужно, конечно, всегда смотреть код. А то мало-ли.
Думаю, удастся ли убедить админа поставить gearman и имеет ли смысл делать такой патч. Не можете разузнать, хотят ли они реализации отдачи данных кусками? Тогда можно будет написать патч.
Просто изначально топик мною был неверно назван: речь скорее о отложенных заданиях, а не о ресурсоёмких.
Ресурсоёмкость же можно определить как «имеет смысл переложить это задание в очередь: его результат на код не влияет, а выполняется он значительно дольше чем постановка в очередь».
То есть, получается, «приплести mapreduce» тут можно?
Gearman, прежде всего, для передачи вычислений на другую машину создан. Отложить в нём задачу а потом спросить «как она там» в нём не вижу как. Подскажите, если можно.
При помощи globus toolkit можно и отложенные вычисления реализовывать, он для этого сгодится. (Я никогда не говорил, что это одно и то же, только лишь что globus toolkit умеет делать работу gearman давно). Но опять-же, это по воробьям из пушки. И при помощи gearman можно (и довольно хорошо) делать простые grid-системы. Это как слону дробинка.
Но и gearman для отложенных вычислений на хостинге — это слишком тяжеловесное решение.
Про частоту использования: давайте сравнивать количество машинного времени (в flops'ах), которую обработал globus toolkit и gearman. Разницу будет видно, думаю, сразу.
Про защищённость: не смог найти в документации по gearman как на нём авторизовываться и как данные предотвращаются от перехвата (шифрование). Может, документация старая. Сейчас гляну исходники.
Кстати, а detach'иться от помещённых заданий в нём можно? Так, что бы потом можно было проверять статус задачи на лету и получать часть данных которая уже готова? Что-то не могу найти в коде perl-клиента.
А то предстоит мне одну вебморду для научных вычислений делать, как раз такая штука нужна.
Википедия про gearman как про mapreduce и думает: WIKI
А при том, что фактически эту работу может делать и globus toolkit. И создан он раньше. И уровень защищённости у него больше. И используется больше. Ну, то есть, по сравнению с ним — gearman совсем новый велосипед.
Хотя, конечно, задачи совершенно у них разные и в первую очередь разный «вес». Как и у приведённого кода класса и gearman, отношение приблизительно такое.
Ну, и, конечно, ресурсоёмкость разная бывает: если задача чуть сложнее добавления task'а в очередь и её возвращаемое значение не интересно прямо сейчас, то можно отложить и на потом. Правда, смысла в таком мало.
Топик назван не корректно, надо переименовать, наверное. Задачи-же могут быть не только ресурсоёмкими но и просто медленными: связь с удалённым хостом, отсылка данных, ручная проверка.
Тут этот класс является достаточно неплохим минимальным решением.
Время выполнение стабильно такое высокое?
В версии 0.13 смотрите (cd ./libgearman-server):
1) Добавление задачи в server.c, стр 272: server_client = NULL;
2) Обработка WORK_DATA в server.c, 485,
3) Выполнение _server_queue_work_data, добавлине данных в очередь, проходит по списку server_client. См. server.c стр. 959.
WORK_DATA, WORK_WARNING, WORK_STATUS, WORK_COMPLETE,
WORK_FAIL, WORK_EXCEPTION
For non-background jobs, the server forwards these packets from
the worker to clients. See «Worker Requests» for more information
and arguments.
А вот статус получить можно.
Думаю, удастся ли убедить админа поставить gearman и имеет ли смысл делать такой патч. Не можете разузнать, хотят ли они реализации отдачи данных кусками? Тогда можно будет написать патч.
Ресурсоёмкость же можно определить как «имеет смысл переложить это задание в очередь: его результат на код не влияет, а выполняется он значительно дольше чем постановка в очередь».
Gearman, прежде всего, для передачи вычислений на другую машину создан. Отложить в нём задачу а потом спросить «как она там» в нём не вижу как. Подскажите, если можно.
При помощи globus toolkit можно и отложенные вычисления реализовывать, он для этого сгодится. (Я никогда не говорил, что это одно и то же, только лишь что globus toolkit умеет делать работу gearman давно). Но опять-же, это по воробьям из пушки. И при помощи gearman можно (и довольно хорошо) делать простые grid-системы. Это как слону дробинка.
Но и gearman для отложенных вычислений на хостинге — это слишком тяжеловесное решение.
Про частоту использования: давайте сравнивать количество машинного времени (в flops'ах), которую обработал globus toolkit и gearman. Разницу будет видно, думаю, сразу.
Про защищённость: не смог найти в документации по gearman как на нём авторизовываться и как данные предотвращаются от перехвата (шифрование). Может, документация старая. Сейчас гляну исходники.
Я так помню, на большинстве хоситнгов можно вызов некоторого URL'а в cron поставить.
А то предстоит мне одну вебморду для научных вычислений делать, как раз такая штука нужна.
А при том, что фактически эту работу может делать и globus toolkit. И создан он раньше. И уровень защищённости у него больше. И используется больше. Ну, то есть, по сравнению с ним — gearman совсем новый велосипед.
Хотя, конечно, задачи совершенно у них разные и в первую очередь разный «вес». Как и у приведённого кода класса и gearman, отношение приблизительно такое.
Тут этот класс является достаточно неплохим минимальным решением.