У меня есть веб-сайт PHP, который анализирует XML и отображает его на веб-странице. XML-файл меняется время от времени, поэтому меняется веб-страница. Он меняется каждые 30 минут.
Я хочу получить XML-данные и вставить их в свою базу данных MySQL. Однако я не могу найти способ вставлять данные в базу данных каждый раз, когда обновляется XML, потому что должен быть задействован клиент, и даже в этом случае данные будут вставляться несколько раз, если страница посещалась более одного раза за эти 30 минут. промежуток времени.
Каждый раз при обновлении файла XML я хотел бы, чтобы мои данные выглядели следующим образом:
XML -> PHP -> База данных
Это может оказаться невозможным, поэтому я понимаю, что мне, возможно, придется использовать отдельный язык сценариев для обновления базы данных с помощью XML-содержимого, сформулированного в виде фразы. Из-за того, что изменения XML должны инициировать обновление базы данных, в этом случае PHP может не работать. XML обновляется с помощью короткого сценария Bash. Я изучал использование BASH, но, похоже, он не очень хорошо подходит для синтаксического анализа XML и обновления баз данных, плюс для меня это будет огромная кривая обучения. Я запускаю это на машине с Ubuntu.
Любые предложения и помощь приветствуются.
как xml обновляется?
Через нмап. Nmap не имеет возможностей базы данных. Просто XML
cron, чтобы проверить, изменилась ли дата файла, а затем, возможно, импортировать. если вы полагаетесь на посещение клиента, просто зарегистрируйте его или проверьте временные метки файлов, чтобы остановить дублирование
Как мне обновить базу данных? Тогда мне пришлось бы делать это через другой язык сценариев. Я мог бы даже проверить это с помощью только php и без задания Cron, но я столкнулся с той же ошибкой, что мне нужен клиент для помещения данных в базу данных.
просто сделайте это с помощью php. xml в mysql db с php тривиально
Извините, но я не понимаю. если никто не посещает веб-страницу, данные будут вставлены в базу данных, а если 10 человек посетят веб-сайт, одни и те же данные будут отправлены 10 раз. Вот почему у меня проблема с использованием php
журнал был вставлен, проверьте журнал перед повторной вставкой
Используйте интерфейс командной строки PHP. Вы назначаете задание cron (или планировщик задач для Windows) для запуска сценария с любой выбранной вами частотой.
Это устраняет проблему дублирования, но если никто не заходит на сайт, то данные не добавляются в базу данных.
следовательно, вариант задания cron, который я уже упоминал
хех, хотя можно было бы возразить, что пока кто-то не зайдет на сайт, нужно ли обновлять данные? (Тем не менее, cron job / планировщик задач — это то, что нужно.)
Я не знаком с php CLI. Спасибо, Смит и Тим, я рассмотрю возможность использования PHP CLI с заданием Cron.