การเชื่อมต่อ PHP กับ MongoDB

MongoDB เป็นฐานข้อมูล NoSQL ที่ใช้กันอย่างแพร่หลายโดยใช้รูปแบบ document-oriented และมีไว้สำหรับจัดเก็บข้อมูลกึ่งโครงสร้าง คำแนะนำด้านล่างนี้ให้คำแนะนำเกี่ยวกับวิธีที่คุณสามารถใช้งานร่วมกับแอป PHP ของคุณได้อย่างง่ายดายซึ่งโฮสต์อยู่ใน Ruk-Com Cloud

การสร้าง Environment

ลงชื่อเข้าใช้บัญชี Ruk-Com Cloud ของคุณและ สร้าง Environment ใหม่ด้วย MongoDB node ของเวอร์ชันที่ต้องการ (สามารถพบได้ในส่วน NoSQL wizard)

เพิ่ม instance ที่จำเป็นที่เหลือทั้งหมด (หากมี – เราจะรวม Apache ไว้ด้วยเพื่อ deploy แอปสำหรับทดสอบในภายหลัง อย่างไรก็ตามอาจอยู่ใน Environment ที่แยกต่างหากเช่นกัน) และกำหนดค่าพารามิเตอร์ที่จำเป็นอื่น ๆ เช่น จำนวนของ resources, region, ชื่อ Env ฯลฯ

คลิกปุ่ม Create เมื่อพร้อมและรอสองถึงสามนาทีเพื่อให้ Env ของคุณได้รับการตั้งค่า

MongoDB Configurations

1. หลังจากสร้าง Environment เสร็จแล้ว จะมีอีเมลรายละเอียด ที่ใช้สำหรับจัดการ environment ส่งไปยัง inbox ของคุณ

2. คลิกที่ลิงค์ Access URL หรือเปลี่ยนไปที่แดชบอร์ดและ Open in browser ใน MongoDB node

ในแท็บเบราว์เซอร์ที่เปิดขึ้นคุณจะเห็นแบบฟอร์ม Sign in สำหรับพาเนล MongoDB สำหรับแอดมิน ป้อนข้อมูลรับรองของผู้ดูแลระบบที่คุณได้รับในอีเมลดังกล่าวข้างต้นแล้วคลิก Login เพื่อเข้าถึง

3. สร้างฐานข้อมูลใหม่โดยป้อนข้อมูลที่ช่องกรอกข้อมูลด้านบนทางขวา (ยกตัวอย่างเป็น mongodb-connect) แล้วกดปุ่ม Create Database

4. จากนั้นคุณต้องสร้างผู้ใช้สำหรับฐานข้อมูลนี้ – ให้เข้าไปที่ Web SSH ของ instance Mongodb และเข้าใช้ mongodb โดยใช้คำสั่ง

mongo -u 'admin' -p '[ใส่รหัสผ่านในตรงนี้]'

5. หลังจากนั้นเลือก database โดยใช้คำสั่ง

use mongodb-connect

จากนั้นพิมพ์คำสั่งต่อไปนี้:

db.createUser({ user: "dbuser", pwd: "passw0rd", roles:[{ role: "readWrite", db: "mongodb-connect"}]})

where

  • user_name– name for your new DB user
  • password – password for this user
  • db_name – database (the above created one is suggested) this user will have the read/write permissions for

จากนั้นเลือกฐานข้อมูลที่เกี่ยวข้องโดยใช้ลิสรายการและ Execute คำสั่งที่ระบุด้วยปุ่มชื่อเดียวกัน คุณจะได้รับการแจ้งเตือนการทำสำเร็จในเวลาไม่กี่วินาที

5. ตอนนี้ต้องเปิดใช้งานไดรเวอร์การเชื่อมต่อเฉพาะเพื่อเปิดใช้งานการโต้ตอบระหว่างเซิร์ฟเวอร์แอปของคุณและ MongoDB ที่ Ruk-Com Cloud จะรวมอยู่ในการสร้างเซิร์ฟเวอร์ PHP แอปทั้งหมดตามค่าเริ่มต้น.

หมายเหตุ :
Link # Starting with the 4.3 Jelastic version มีไดร์เวอร์สองเวอร์ชันให้ใช้งานที่เซิร์ฟเวอร์แอป PHP ที่สร้างขึ้นใหม่ทั้งหมด:

  • mongo.so (ปัจจุบันถือว่าเลิกใช้งานแล้ว)
  • mongodb.so

ส่วนขยายทั้งสองนี้ใช้ API ที่แตกต่างกันดังนั้นเราขอแนะนำให้ใช้โมดูลเดิมเพื่อให้แอปพลิเคชันเก่าทำงานต่อไปในขณะที่ปรับโปรเจ็กต์ใหม่ของคุณเนื่องจากเป็นเวอร์ชันล่าสุด

เคล็ดลับ: โดยทั่วไปแล้วการติดตั้ง Ruk-Com ที่ใช้แล้วจะสามารถเห็นได้ภายในโลโก้ที่มุมแดชบอร์ดด้านซ้ายบน นอกจากนี้คุณสามารถตรวจสอบได้จาก link # Ruk-Com Cloud Union Catalog

ดังนั้นในการเปิดใช้งานไดรเวอร์ที่จำเป็นให้กลับไปที่แดชบอร์ด วางเมาส์เหนือcompute node ใน Env ของคุณแล้วคลิกที่ปุ่ม Config ที่ปรากฏ

6. ภายในแท็บ configuration manager ที่เปิดอยู่ให้ขยายโฟลเดอร์ etc แล้วเลือกไฟล์ php.ini ที่อยู่ข้างใน

ค้นหาคำว่า [mongodb] และนำ comment เครื่องหมาย (;) หน้าชื่อของ library ที่ต้องการใช้ออก ในเคสนี้จะเป็น mongdb.so

7.  บันทึกการเปลี่ยนแปลงที่ดำเนินการ และรีสตาร์ทโหนดแอปเซิร์ฟเวอร์ของคุณเพื่อนำไปใช้

การ Deploy แอปพลิเคชัน

ตอนนี้คุณสามารถดำเนินการ deploy แอปพลิเคชันใน Environment ที่คุณเพิ่งเตรียมไว้โดยใช้ Ruk-Com Deployment Manager (สำหรับโปรเจ็กต์ที่รวมไว้ในที่เก็บแบบถาวรหรือดึงมาจากที่เก็บ GIT / SVN โดยตรง)

ตัวอย่างเช่นเราจะใช้แอปง่าย ๆ ต่อไปนี้ซึ่งออกแบบมาเพื่อตรวจสอบการสร้างการเชื่อมต่อระหว่าง compute node ที่เกี่ยวข้องกับเซิร์ฟเวอร์ MongoDB ที่ระบุโดยใช้ส่วนขยาย mongodb.so

index.php:

<html>
  
<head>
 <title>Test MongoDB Connection</title>
</head>
  
<body>
 <h1>Test MongoDB Connection</h1>  
<form action="#" name="form" method="POST">
  <table cellspacing="10">
    <tr><td>Host</td><td><input type="text" name="host" value="<?php echo htmlspecialchars($_POST['host']); ?>" size="40"></td></tr>
      <tr><td>User</td><td><input type="text" name="username" value="<?php echo htmlspecialchars($_POST['username']); ?>" size="20"></td></tr>
    <tr><td>Password</td><td><input type="text" name="password" value="<?php echo htmlspecialchars($_POST['password']); ?>" size="20"></td></tr>
    <tr><td>Database</td><td><input type="text" name="database" value="<?php echo htmlspecialchars($_POST['database']); ?>" size="20"></td></tr>
    <tr></tr>
    <tr><td> </td><td><input type="submit" name="sub" value="Test Me!"></td></tr>
  </table>
</form>
  
<?php
if (@$_POST['sub']){
 $host=$_POST['host'];
 $username=$_POST['username'];
 $password=$_POST['password'];
 $userdb=$_POST['database'];
 $database=$userdb.".phptest";
  
  try{
    $manager = new MongoDB\Driver\Manager("mongodb://{$host}/{$userdb}", array("username" => $username, "password" => $password));
       if ($manager) {
        $bulk = new MongoDB\Driver\BulkWrite;
        $bulk->insert(['x' => 1]);
        $bulk->insert(['x' => 2]);
        $bulk->insert(['x' => 3]);
        $manager->executeBulkWrite($database, $bulk);
  
        $filter = ['x' => ['$gt' => 1]];
        $options = [
            'projection' => ['_id' => 0],
            'sort' => ['x' => -1],
        ];

        $query = new MongoDB\Driver\Query($filter, $options);
        $cursor = $manager->executeQuery($database, $query);
            }    
  }catch(Exception $e){
      echo  "<center><h1>Doesn't work</h1></center>";
    print_r($e);
           exit;
  }
}  

if ($host)
 echo "<center><h1>Good connection</h1></center>";

?>
  
</body>
</html>

ดังนั้นหากคุณต้องการทดสอบการเชื่อมต่อ เพียง download แพ็กเกจพร้อมกับโปรเจ็กต์ดังที่แสดงไว้ด้านบน และทำการ deploy

เคล็ดลับ: สำหรับเวอร์ชันไดรเวอร์เดิม (เช่น mongo.so) โปรดใช้แอปพลิเคชันทดสอบนี้ ขั้นตอนการทำงานจะคล้ายกับที่อธิบายไว้ด้านล่าง

ดังนั้นคุณจะได้รับ Environment ที่คล้ายกับที่แสดงด้านบน

ตรวจสอบการเชื่อมต่อ

1. เปิด Environment ของคุณในเบราว์เซอร์ด้วยปุ่มชื่อเดียวกันคุณจะเห็นแบบฟอร์มสำหรับป้อนรายละเอียดฐานข้อมูล MongoDB ของคุณ

ควรระบุค่าต่อไปนี้:

  • Host – ลิงก์ไปยังพาเนลฐานข้อมูลสำหรับแอดมินของคุณโดยไม่มีส่วน https:// (สามารถพบได้ในอีเมลที่เกี่ยวข้องหรือคัดลอกจากแถบ address ของเบราว์เซอร์หลังจากคลิก Open in browser สำหรับ MongoDB node)
  • User – ชื่อผู้ใช้ที่คุณกำหนดให้กับฐานข้อมูล (ในกรณีของเรา คือ dbuser)
  • Password – รหัสผ่านสำหรับผู้ใช้ที่ระบุไว้ในฟิลด์ก่อนหน้านี้
  • Database – ชื่อของฐานข้อมูลที่ต้องการ (ในกรณีของเรา คือ mongodb-connect)

หลังจากป้อนข้อมูลในช่องที่เกี่ยวข้องแล้วให้คลิกที่ปุ่ม Test Me!

2. หากข้อมูลที่ระบุถูกต้องข้อความ  Good connection  จะแสดงขึ้น

ถ้าข้อมูลผิดคุณจะได้รับการแจ้งเตือนว่าการเชื่อมต่อของคุณไม่ทำงาน และผลลัพธ์โดยละเอียดของข้อผิดพลาดนี้เกิดจากสิ่งใด

3. นอกจากนี้เมื่อสร้างการเชื่อมต่อสำเร็จคอลเลกชัน phptest อันใหม่ที่ภายในมี record จำนวนหนึ่งจะถูกเพิ่มไปยังฐานข้อมูลที่ระบุ

ดังนั้นคุณสามารถไปที่พาเนลฐานข้อมูลของแอดมิน เพื่อให้แน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้องและดำเนินการอื่น ๆ ที่จำเป็นต่อไป

สิ่งที่ควรรู้

Ruk-Com Developer’s Center ยังมีคู่มือ MongoDB ที่เฉพาะเจาะจงอีกจำนวนมากซึ่งอาจมีประโยชน์สำหรับงานที่แตกต่างกัน:

  • ตั้งค่า Master-Slave Replication ระหว่างเซิร์ฟเวอร์ฐานข้อมูลหลายตัวเพื่อให้ได้ประสิทธิภาพที่ดีขึ้นและการเข้าถึงข้อมูล
  • กำหนดค่า Replica Set ด้วยจำนวน MongoDB node ที่ไม่เท่ากันเพื่อใช้การจำลองแบบ Master-Slave และ Failover อัตโนมัติพร้อมกัน
  • เพิ่มความปลอดภัยให้กับข้อมูลผ่านการตั้งค่า Backups Scheduling ซึ่งอาจป้องกันข้อมูลสูญหายหรือลดผลที่ตามมา (ผ่านการกู้คืน) หากเกิดความล้มเหลวของเซิร์ฟเวอร์โดยไม่คาดคิด
  • ใช้ตัวเลือก Remote Access สำหรับการดำเนินการกับฐานข้อมูลของคุณโดยตรงผ่านไคลเอนต์แอปพลิเคชันที่ต้องการ กำจัดความจำเป็นในการเข้าสู่ระบบแดชบอร์ดของเรา
  • ตรวจสอบวิธีการ Import & Export Dump โดยใช้ 3d-party DB management clients เพื่อสำรองข้อมูลของคุณได้อย่างง่ายดาย