Если вы написали скрипт запуска Apache самостоятельно, вы можете включить проверку, запущен ли экземпляр базы данных.
Вы можете включить простой цикл ожидания:
MYSQL_OK=1
while ["$MYSQL_OK" -ne 0] ; do
echo "SELECT version();" | mysql -utestuser -ptestpassword testdb
MYSQL_OK=$?
sleep 5
done
Очевидно, что вам нужно создать тест-пользователя и базу данных тестов в Mysql:
CREATE DATABASE testdb;
GRANT USAGE,SELECT ON testdb.* TO 'testuser'@'localhost' IDENTIFIED BY 'testpassword';
FLUSH PRIVILEGES;
Просто поместите цикл while где-нибудь в начало) часть вашего скрипта. Если ваша система представляет собой какую-то Redhat-систему, вы заметите, что скрипт запуска /etc/init.d/httpd имеет следующую строку:
Required-Start: $local_fs $remote_fs $network $named
Если вы добавите $ mysqld в эту строку, Apache будет настаивать на запуске mysqld перед запуском:
Required-Start: $local_fs $remote_fs $network $named $mysqld
Однако, недостатком является то, что запуск Apache завершится неудачей, вместо того, чтобы ждать выполнения mylsqd.
Удачи,
Алекс.