Я запускаю карту перезаписи с помощью внешней программы перезаписи (prg) в apache2, которая может вызвать ошибку и умереть. Когда карта перезаписи больше не работает, система, очевидно, не работает должным образом.
Поэтому я хотел запустить простой сценарий оболочки-оболочки, который сам выполняет программу карты (написанную на php) и перезапускает ее, если она умирает:
#!/bin/bash
until /usr/bin/php /somepath/mymap.php; do
echo "map died but i will restart it right away!"
done
Если я попробую это в оболочке вручную, все будет работать нормально, однако не работает при запуске веб-сервером.
... а затем связывается с механизмом перезаписи через его дескрипторы файлов stdin и stdout. Для каждого поиска функции карты он получит ключ для поиска в виде строки с символом новой строки в конце на стандартном вводе. Затем он должен вернуть искомое значение в виде строки, заканчивающейся новой строкой, на стандартный вывод или четырехсимвольной строки ``NULL'', если это не удается...
Причина мне кажется вполне понятной. Первый скрипт принимает стандартный ввод, но не перенаправляет его на сабскрипт.
Я думаю, мне как-то нужно определить дескриптор, используя exec
, и правильно перенаправить stdin/stdout скриптов. Но как мне это сделать?