Изменение приоритета выполнения скрипта

slim12

Новичок
Изменение приоритета выполнения скрипта

Добрый день!

На PHP пишу не так давно. Интересует ответ на такой вопрос.

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

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

Другими словами, недопустимо, что бы скрипт грузил 80 с. ЦП на 100%. Пускай лучше работает 5 м. но при этом использует 10-20% ресурсов сервера. Ну как в Винде приложения выполняються в фоновом режиме или с самым низким приоритетом.

Может звучит и по дибильному :), но есть такая задача. Как то же ее можно решить! В гугле ничего не удалось накопать на эту тему :(.
 

AmdY

Пью пиво
Команда форума
профайлинг, ищешь место где у тебя отжирается столько ресурсов и фиксишь его. если возможно.
 

slim12

Новичок
Мммм.

В том то и дело. Скрипт тяжелый и делает довольно ресурсоемкие операции. Фиксить толком нечего, и так знаю из за чего так систему грузит :).
 

FractalizeR

Новичок
Автор оригинала: slim12
Мммм.

В том то и дело. Скрипт тяжелый и делает довольно ресурсоемкие операции. Фиксить толком нечего, и так знаю из за чего так систему грузит :).
Так расскажите. Может, подскажем чего. Мне ваш вопрос напоминает, как суп едят вилкой
 

Xeon303

Новичок
FractalizeR
Может видео конвернтуть нужно... (к примеру). Только это значения не имеет.
 

no_santa

Снегур
Если в целом сервер не очень загружен, можно виртуалкой - как на хостингах.

С ренайсом фигня получается - решение будет недопустимо жестко зависеть от окружения, пробовали...

См. OpenVZ или что-нибудь поинтереснее, на твое усмотрение.
 

FractalizeR

Новичок
Автор оригинала: Xeon303
FractalizeR
Может видео конвернтуть нужно... (к примеру). Только это значения не имеет.
Это имеет значение. Конвертировать видео с помощью PHP - изврат похуже того, что Калигула творил.
 

no_santa

Снегур
Автор оригинала: FractalizeR
Это имеет значение. Конвертировать видео с помощью PHP - изврат похуже того, что Калигула творил.
Этот "изврат" называется php-ffmpeg и отлично работает! ;)
 

Alexandre

PHPПенсионер
Этот "изврат" называется php-ffmpeg и отлично работает!
все равно изврат.

запускаем скрипт, который кладет в очередь имя файла на конвертацию и устанавливает во временном файле (или мемкеше) статус конвертации "Conv"

по крону запускаем скрипт и разгребаем очередь,
запускаем в цикле ffmpeg и конвертим видео
по окончании конвертации изменяем статус на Ок

аяксом опрашиваем статус конвертации, и когда наше видео сконвертится, подменяем изображение "на обработке" на видео-превьюшку или код с флешкой (по желанию).
 

slim12

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

Ну вот, :) начинается стандартная болезнь всех форумов. Люди начинают постепенно спорить между собой уходя все дальше от сути проблемы :).

Нет я не пережимаю видео и php-ffmpeg не использую. Изначально не внедрялся в мелочи задачи, так как интересует конкретный ответ, на конкретный вопрос. Реально ли запустить скрипт с низким приоритетом. Очень жаль, что стандартными средствами php нельзя справиться с этой проблемой (или все же можно ?).

Я прекрасно понимаю, что мою задачу можно довольно просто решить использованием дополнительного сервера "колбасера", который будет заниматься исключительно обработкой этого скрипта, а для вывода использовать другой сервер. Но ивестор вещь тонкая. Приходиться обходиться тем, что есть. В любом случаи пока. В дальнейшем придется наращивать ресурс.

Скрипт дергает XML определенной структуры, в каждом из которых содержится в среднем от 1000 до 5000 товаров. Естественно обработка XML и синхронизация записей с БД не такой уж и ресурсоемкий процесс (в среднем выполняется за 1 с. при минимальной нагрузке сервера). Но есть еще фотографии товара, которые через Curl подтягиваются с разных серверов и налету ресайзяться до нужных размеров, а также автоматически создаются превью.

Вот собственно суть проблемы. Во время ресайза ЦП хоть и не нагружается на все 100%, но все же надо думать о том, что есть еще посетители которые делают Full text search запросы к БД и.т.д, ну а также канал тоже не резиновый и забивать его даже на половину подтягиванием картинок не очень то хотелось.

Ну вот, что бы выкрутиться из этой проблемы и родилась у меня в голове идея. XML обрабатывать, а загрузку и обработку файлов запускать с очень низким приоритетом или вообще в фоновом режиме когда сервер простаивает без работы. Сейчас понимаю, что скорей всего хрен что получиться :). Буду трясти инвестора, мож че с него высыпится :).
 

dimagolov

Новичок
slim12, ты тупишь. тебе ВЕСЬ контент надо иметь локально и в нужном разрешении. то есть при получении новых товаров надо ОДИН РАЗ вытянуть все картинки и отресайзить их как требуется. Как долго это будет происходить особой разницы нету, все равно подобное будет пускаться по крону с нужным приоритетом.

Если очень хочешь извращаться (типа нафиг тянуть все, их только 5% посмотрят), ладно, сделай Lazy Load, то есть тяни только то, что запросились, но ОДИН РАЗ. Ну и нафиг не нужно тянуть сразу ВСЕ картинки, тянуть надо только те, которые нужно отобразить.
 
Сверху