Как отправлять / вставлять данные в более чем одну базу данных с помощью PhP / MySQL

#php #mysql

#php #mysql

Вопрос:

У меня есть интернет-магазин, где клиенты могут заказывать товары, поскольку теперь, когда заказ завершен, я вставляю данные продукта и пользователя в базу данных (server1), но теперь мне нравится вставлять те же данные заказа в еще одну базу данных, которая размещена на другом хостинге (server2), обе машины используют php / mysql.

Я думаю использовать PhP cURL для передачи данных с server1 на server2 следующим образом

     $curl_handle=curl_init();
     $data = http_build_query($order_data);
     curl_setopt($curl_handle,CURLOPT_URL,'https://www.server2.com/orders');
     curl_setopt($curl_handle, CURLOPT_POST, 1);
     curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $data);
    curl_exec($curl_handle);
    curl_close($curl_handle);
 

Мой вопрос таков: буду ли я делать это с помощью cURL или в MySQL есть что-то лучшее, что может это сделать. Кстати, оба сервера являются общим хостингом, если это имеет значение

Комментарии:

1. Вы могли бы сделать это напрямую, используя функции mysql в PHP. Если у вас есть класс-оболочка для всех ваших операций с БД, вы можете просто запустить все запросы дважды: по одному для каждого подключения к БД.

2. Я рекомендую решение Herwigs, но, пожалуйста, обратите внимание, что вы должны разрешить доступ к mysql (например, порт 3306) 1.) в брандмауэре хоста 2 и 2. в пользовательской таблице mysql сервера 2. как обычно msql настроен только на прием вызовов от localhost.

3. @AlexanderDobernig хорошо, я попробую, но до сих пор я нахожу проблему с конфигурацией mysql, потому что она находится на общем хостинге

4. Если оба сайта находятся на одном хостере, и вы не можете самостоятельно изменить настройки — спросите своего провайдера, можно ли получить доступ к db2 с host1. В облачном хостинге вы обычно можете изменить все.

Ответ №1:

вы могли бы сделать что-то вроде

 $host = ['host1','host2'];
$db_name = ['db_name1','db_name2'];
$user = ['user1','user2'];
$pass = ['pass1','pass2'];

for($i=0;$i<count($host);$i  ){
   $mysqli = new mysqli($host[$i], $user[$i], $pass[$i], $db_name[$i]);
   or
   $mysqli = mysqli_connect($host[$i], $user[$i], $pass[$i], $db_name[$i]);
   And here the insert code:
   mysqli->query(....);
}
 

Вы в основном инициализируете встроенную функцию mysqli php для каждой базы данных, и вы можете работать с каждой базой данных