Оптимальным решением является устранение утечки памяти, отслеживание функции утечки и отправка нового вопроса с соответствующим кодом, если вам нужна помощь.
Теперь для этого конкретного случая вы можете использовать что-то вроде этого:
while true
do
timeout 12h php myfile.php
done
Это бесконечный цикл, который запускает вашу команду и убивает ее каждые 12 часов. (или любая другая продолжительность, которую вы хотите: 30м, 1д и т. д.)
Более стабильным решением является создание службы systemd или развертывание вашего сценария с помощью какого-либо диспетчера процессов, например Supervisor или Monit.
В Supervisor есть параметр конфигурации "autorestart", если вы укажете true, он перезапускает ваш скрипт каждый раз, когда происходит сбой, и это стабильное решение, готовое к работе.
Пример конфигурации супервизора из этого поста
[program:are_we_there_yet]
command=php /var/www/areWeThereYet.php
numprocs=1
directory=/tmp
autostart=true
autorestart=true
startsecs=5
startretries=10
redirect_stderr=false