Uma boa alternativa é deixar o PHP fazer o loop, em vez de fazer uma chamada em loop para o PHP.
Realmente, assim que você tiver isso, tudo que você precisa fazer é fazer com que o Ubuntu mantenha uma cópia do script sendo executada de alguma forma. Isso pode ser feito com um script Upstart super simples. Você poderia colocar isso em /etc/init/myphpscript.conf
:
description "My PHP script"
start on startup
stop on shutdown
respawn
exec sudo -u www-data -- php -f /path/to/script.php
Note que assim que o PHP sair, o Upstart vai extrair outra cópia, então se você não colocar um sleep no PHP, você estará em um muito rápido, possivelmente muito caro (eu não sei o que seu código faz) loop.