2016-06-24 3 views
0

Мне нужно получить данные из этих двух разных баз данных и передать данные в URL-адрес. Значения в базе данных компании и таблице safdetail часто обновляются, однако данные в базе данных рабочих мест не изменяются. Я не могу придумать, как эффективно пройти эти два. Кто угодно?Выбор из двух разных баз данных MYSQL

//Connect to company database 
$sql = "SELECT mobilenumber, amount FROM safdetail WHERE notification = 0"; 
$result = mysqli_query($conn, $sql); 
$resultarr = mysqli_fetch_assoc($result); // fetch data 



    $mobile = $resultarr['mobilenumber']; 
    $amount = $resultarr['amount']; 


//connect to workers database 
    $sq = "SELECT shortCode, spId, password, commandID, serviceID FROM workers WHERE notification = 0"; 

$result1 = mysqli_query($conn, $sq); 
$resultarr1 = mysqli_fetch_assoc($result1); // fetch data 

    $shortCode = $resultarr1['shortCode']; 
    $spId = $resultarr1['spId']; 
    $password = $resultarr1['password']; 
    $commandID = $resultarr1['commandID']; 
    $serviceID = $resultarr1['shortCode']; 



       $serviceArguments = array(
          "serviceID" => $serviceID, 
          "shortCode" => $shortCode, 
          "spId" => $spId, 
          "password" => $password, 
          "mobilenumber" => $mobile, 
          "amount" => $amount, 
          "commandID" => $commandID 
          ); 

      $client = new SoapClient("http://32.37.12.12:8080/B2DSimulator/Simulator?wsdl"); 

      $result = $client->process($serviceArguments); 

ответ

0

Для того, доступ к таблицам разнится для различных баз данных, просто префикс базы данных перед именем таблицы, как это:

SELECT * FROM DB1.myTable1 AS db1, DB2.myTable2 AS db2 

Если вам нужен более конкретный ответ на свой упомянутый код, пожалуйста, дайте мне знать, и я будет копать немного больше в вашей конкретной проблеме.

Редактировать: прочитав свой код, я думаю, что это уже самый быстрый способ достижения ваших целей. Для вашего конкретного случая вы можете захотеть использовать memcached для кэширования рабочей таблицы в течение более длительного времени. Вы также должны убедиться, что вы указали поле уведомления в обеих таблицах, как вы используете это для своего запроса. Это значительно повысит скорость запросов на больших таблицах.

В зависимости от того, насколько велика ваша таблица и как долго возникают запросы, есть и другие возможные улучшения. Если вы используете InnoDB, вы можете взглянуть на транзакции. Я не знаю, как долго эти запросы берутся или что именно происходит с производительностью (часто называется этот php-файл, и вы хотите избежать повторения этих запросов снова или снова, или эти запросы длится до тех пор, пока не появится результат?)

Сторона примечания: Возможно, вы захотите изменить IP-адрес и URL-адрес своего кода.

+0

Привет. поэтому для моего случая я должен сделать это «SELECT * FROM company.safdetail AS db1, workers.workers AS db2» Оттуда мне нужно более подробно рассмотреть мой конкретный вопрос. Пожалуйста ... ** Для URL и IP ** я уже отредактировал спасибо. – Bob

+0

@Bob Я отредактировал свой ответ, пожалуйста, эллиборат, что точно не достаточно для выполнения или что именно вы хотите улучшить. Как часто этот файл вызывается в секунду/минуту, сколько времени требуется, пока результат не будет получен из обоих запросов? – kentor

+0

php-скрипт не вызывается часто, но при вызове база данных компании может иметь много записей, но база данных рабочих станций имеет статическую запись, которая извлекается каждый раз, чтобы сопровождать остальные записи из другого db. Я не был уверен, будет ли это работать эффективно, если, например, сразу вводится множество записей. – Bob

Смежные вопросы