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






Благодаря Смиту и Тиму Мортону я нашел решение.
Я создал отдельный файл PHP, который будет разбирать XML на переменные и вставлять данные в базу данных.
Чтобы запустить сценарий Nmap, обновляющий XML-файл, я использовал задание cron, которое вызывало сценарий bash. В сценарии bash после запуска Nmap я изменил расположение каталога на папку, содержащую мой сценарий, а также мой XML-файл. Затем я запустил файл PHP с помощью PHP CLI (php -f /xxx/xxx/php.php).
Поэтому вместо использования триггера, чтобы узнать, изменился ли файл XML, я обновил базу данных в другом файле PHP, который был вызван в том же сценарии bash.
ОНО работало так:
Cron job > BASH script > Run Nmap > update XML
> call PHP file > update database
Еще раз спасибо, Смит и Тим Мортон
как обновляется xml?