v2.5.2
Giriş yap

Uzak Mysql'e Alternatif

mcfearcombat
702 defa görüntülendi

Merhaba,

Aynı reseller hesabında bulunan iki sitem mevcut. Bu siteleri A ve B olarak nitelendirecek olursak A sitesinde bir ön muhasebe yazılımım çalışmakta ve B sitesinde de e-ticaret sitesi çalışmakta.

Yapmak istediğim ürünlerin adet ve fiyat bilgilerini B sitesindeki veritabanına A sitesinden uzak mysql ile bağlanıp düzenli güncellemekti. Ancak hosting hizmet sağlayıcı firma güvenlik sebebi ile uzak mysql'i kapattığı ve açmadığı için bu yöntem suya düştü. Çok uzun dönem ödeme yaptığım ve cpanel vs. gibi sebeplerden dolayı sanal sunucu vb. hizmetlerede geçmek istemiyorum.

Aklıma gelen ilk çözüm yöntemi A sitesinden verileri bir XML ile çıkıp düzenli olarak B sitesi üzerinden okuyup veritabanına kayıt yapmak.

Sizlere danışmak istediğim benim aklıma gelen yöntemden farklı çözüm önerileriniz ve basit/sağlıklı yöntem tavsiyelerinizdir. Aydınlatabilirseniz sevinirim.

ebykdrms
796 gün önce

B sitesinin veritabanına bağlanma işini doğrudan B sitesinden erişerek yapabilirsiniz.
1. B sitesinde web servis gibi çalışacak bir sayfa oluşturun. Bu sayfa kendisine POST yöntemiyle gelen verileri alsın, kendi veritabanına yazsın.
2. A sitesinden bu B sitesindeki sayfaya POST isteği gönderin.

B sitesinde integration.php sayfası

$productId = $_POST["product_id"];
$newPrice = $_POST["price"];

updateDatabase("UPDATE products SET price='$newPrice' WHERE id=$productId");

echo json_encode(["status"=>true, "message"=>"Price updated successfully"]);
exit();

A sitesinde bir ürünün fiyatını kendi veritabanına kaydederken, B sitesine de durumu bildiren sayfa


// ... A sitesi kendi veritabanında güncelleme işini yaptıktan sonra B sitesine de verileri gönderiyor...

$fields = ['product_id' => '1234', 'price' => '19.90'];

$postvars = http_build_query($fields);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://b.site/integration.php");
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);
$result = curl_exec($ch);
curl_close($ch);

// Burada da dönen $result değerine göre işlemin başarılı/başarısız oluşuna göre aksiyon alınabilir...

Dikkat: Bu örneklerde hiçbir güvenlik önlemi alınmadığı için saldırıya çok açık.
B sitesinde hangi siteden istek atıldığının tespiti, SQL injection önlemleri, A sitesinin B sitesine istek göndermeden önce B sitesinde oturum açması veya bir token alması...
Ama temel olarak sunucular arası veritabanı bağlantısı kuramıyorsanız siz de böyle bir yola başvurabilirsiniz.