Вставить в базу данных без клиента с PHP

У меня есть веб-сайт PHP, который анализирует XML и отображает его на веб-странице. XML-файл меняется время от времени, поэтому меняется и веб-страница. Он меняется каждые 30 минут.

Я хочу иметь возможность брать данные XML и вставлять их в свою базу данных MySQL. Однако я не могу найти способ вставлять данные в базу данных каждый раз, когда XML обновляется, потому что должен быть задействован клиент, и даже в этом случае данные будут вставлены несколько раз, если страница была посещена более одного раза за эти 30 минут. промежуток времени.

Каждый раз, когда XML-файл обновляется, я хотел бы, чтобы мои данные были следующими:

XML -> PHP -> База данных

Это может быть невозможно, поэтому я понимаю, что мне, возможно, придется использовать отдельный язык сценариев для обновления базы данных с помощью сформулированного содержимого XML. Из-за того, что изменения XML должны запускаться, обновление базы данных PHP может не работать в этом случае. XML обновляется с помощью короткого сценария Bash. Я изучал использование BASH, но, похоже, он не годился для синтаксического анализа XML и обновления баз данных, к тому же для меня это было бы огромной кривой обучения. Я запускаю это на машине Ubuntu.

Любые предложения и помощь приветствуются.

как обновляется xml?

user9487972 08.04.2018 04:36

Через nmap. Nmap не имеет возможностей базы данных. Просто XML

user3885957 08.04.2018 04:39

cron, чтобы проверить, не изменилась ли дата файла, а затем, возможно, импортировать. если вы полагаетесь на то, что клиент посетит, просто регистрация его выполнения или проверка временных меток файлов остановят дублирование

user9487972 08.04.2018 04:51

Как мне обновить базу данных? Тогда мне пришлось бы сделать это на другом языке сценариев. Я мог бы даже проверить это с помощью только php и без задания Cron, но я сталкиваюсь с той же ошибкой, когда нужен клиент для размещения данных в базе данных.

user3885957 08.04.2018 04:53

просто сделайте это с помощью php. xml в mysql db с php тривиально

user9487972 08.04.2018 04:56

Извините, но я не понимаю. если никто не посещает веб-страницу, данные будут вставлены в базу данных, а если 10 человек посетят веб-сайт, одни и те же данные будут отправлены 10 раз. Вот почему у меня проблема с использованием php

user3885957 08.04.2018 05:01

журнал, что он был вставлен, проверьте журнал перед повторной вставкой

user9487972 08.04.2018 05:02

Используйте интерфейс командной строки PHP. Вы планируете задание cron (или планировщик задач для Windows), чтобы сценарий запускался с любой выбранной вами частотой.

Tim Morton 08.04.2018 05:04

Это решает проблему дублирования, но если никто не посещает сайт, данные не добавляются в базу данных.

user3885957 08.04.2018 05:05

следовательно, вариант задания cron, который я уже использовал

user9487972 08.04.2018 05:05

хех, хотя можно было бы возразить, что, пока кто-то не посетит веб-сайт, нужно ли обновлять данные? (Тем не менее, планировщик заданий / задач cron - это то, что вам нужно.)

Tim Morton 08.04.2018 05:10

Я не знаком с php CLI. Спасибо, Смит и Тим, я рассмотрю использование PHP CLI с заданием Cron.

user3885957 08.04.2018 05:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
12
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Благодаря Смиту и Тиму Мортону я нашел решение.

Я создал отдельный файл 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

Еще раз спасибо, Смит и Тим Мортон

Другие вопросы по теме