Я пытаюсь написать программу, которая обращается к базе данных MYSQL. База данных используется PHP Script и C-программой.
Моя программа на C большую часть времени находится в спящем режиме и должна быть проинформирована, если что-то изменилось PHP-скриптом в базе данных. Поэтому я хотел вызвать небольшой процесс, который отправляет прерывание моей программе на C, которая затем подключается к базе данных и загружает изменения.
Соединение с базой данных и все остальное работает нормально. Но я не знаю, как реализовать это прерывание, и я не хочу просто опрашивать мою базу данных.
Есть кто-нибудь совет для меня?
Вы, вероятно, хотите использовать сигнал, который вы отправляете с posix_kill
от php и получите его с обработчиком сигнала, установленным с signal
из вашего кода C Тем не менее, вам, вероятно, придется запускать вашу C-программу от имени того же пользователя, который запускает ваш веб-сервер, чтобы php мог отправлять сигналы вашему C-процессу.
Это уже очень странная вещь, которую вы хотите сделать, и вы, вероятно, искажаете фактическую проблему. Почему то, что модифицирует базу данных, не то же самое, что делает работу, что бы это ни было? Если работу нужно выполнить относительно быстро, вы можете просто поспать несколько секунд, прежде чем проверять, есть ли что-то новое. Если запросы редки и вам нужна быстрая реакция в любом случае, вы хотите иметь что-то вроде сокета Unix. Программа на C (почему код на C?) Будет ждать в сокете, а уведомления, отправленные через сокет, будут запрашивать ее у базы данных. Кроме того, почему вы заставляете его запрашивать базу данных? Почему бы не отправить фактический запрос?