Как запустить PHP скрипт из консоли на всех ядрах?
Скажите, гуру, есть ли какая-то возможность запускать php-скрипты из консоли (linux, php 5.3), задействуя сразу все ядра? Вкратце: есть скрипт, который должен запускаться не часто, но много писать в базу, при этом запросы получаются не большие и их много (over 100000).
Сейчас скрипт работает, но загружает только одно ядро и работает долго (часов по 7). Может есть какая-то возможность из linux указывать максимальное количество ядер для php?
Вот ограничить просто, а распаралелить сложней ;)
самый легкий способ разбейте скрипт на количество процессоров, пусть один работает с массивом a-e дургой со следующим диапазоном, собственно и запускайте сразу 4 скрипта или сколько у вас там процессоров.
решение не изящное но работать будет и быстро.
Нет, по умолчанию PHP работает однопоточно. Вы можете руками запустить много скриптов ( или не руками, а supervisor, например) но они должны быть соответсвующе написаны, и не делать одну и туже работу. А еще , прежде чем что-то оптимизировать сначало найдите узкое место, xhprof например, а тогда уже устраняйте его
если дистрибутив позволяет, то можно использовать taskset ("taskset - retrieve or set a process's CPU affinity
"). однако надо протестировать как на это будет реагировать приложение.