Tất cả các phiên bản của trình điều khiển kể từ 1. 2. 0 duy trì » đối tượng máy khách libmongoc trong quy trình công nhân PHP, cho phép nó sử dụng lại các kết nối cơ sở dữ liệu, trạng thái xác thực và thông tin cấu trúc liên kết trên nhiều yêu cầu
Khi nào MongoDB\Driver\Manager. __construct[] được gọi, một hàm băm được tạo từ các đối số của nó [i. e. tùy chọn mảng và chuỗi URI]. Trình điều khiển sẽ cố gắng tìm đối tượng máy khách » libmongoc đã tồn tại trước đó cho hàm băm đó. Nếu không thể tìm thấy một ứng dụng khách hiện tại cho hàm băm, một ứng dụng khách mới sẽ được tạo [và được duy trì để sử dụng trong tương lai].
Mỗi máy khách chứa các kết nối cơ sở dữ liệu riêng và chế độ xem cấu trúc liên kết của máy chủ [e. g. độc lập, bộ bản sao, cụm phân đoạn]. Bằng cách duy trì ứng dụng khách giữa các yêu cầu PHP, trình điều khiển có thể sử dụng lại các kết nối cơ sở dữ liệu đã thiết lập và loại bỏ nhu cầu » khám phá cấu trúc liên kết máy chủ trên mỗi yêu cầu
Xem xét ví dụ sau
Hai đối tượng Trình quản lý đầu tiên sẽ chia sẻ cùng một ứng dụng khách » libmongoc vì các đối số hàm tạo của chúng giống hệt nhau. Mỗi đối tượng thứ ba và thứ tư sẽ sử dụng ứng dụng khách của riêng họ. Tổng cộng, ba ứng dụng khách sẽ được tạo và nhân viên PHP thực thi tập lệnh này sẽ mở hai kết nối tới 127.0.0.1
và một kết nối tới mỗi rs1.example.com
và rs2.example.com
. Nếu trình điều khiển phát hiện ra các thành viên bổ sung của bộ bản sao sau khi đưa ra các lệnh hello
, nó cũng sẽ mở các kết nối bổ sung đến các máy chủ đó
Nếu cùng một công nhân thực thi lại tập lệnh trong yêu cầu thứ hai, ba máy khách sẽ được sử dụng lại và không có kết nối mới nào được tạo. Tùy thuộc vào yêu cầu trước đó đã được phục vụ trong bao lâu, trình điều khiển có thể cần đưa ra các lệnh hello
bổ sung để cập nhật chế độ xem cấu trúc liên kết của nó
Ổ cắm tồn tại [Phiên bản PHP trước 1. 2. 0]
Phiên bản trình điều khiển PHP trước 1. 2. 0 sử dụng API Luồng của PHP cho kết nối cơ sở dữ liệu, sử dụng API trong » libmongoc để chỉ định trình xử lý tùy chỉnh cho giao tiếp ổ cắm; . Do đó, trình điều khiển vẫn duy trì các kết nối cơ sở dữ liệu riêng lẻ chứ không phải thông tin cấu trúc liên kết hoặc trạng thái xác thực. Điều này có nghĩa là trình điều khiển cần phát lệnh khi bắt đầu mỗi yêu cầu để xác thực và » khám phá cấu trúc liên kết máy chủ. MongoDB\Driver\Manager. As a result, the driver persists individual database connections but not authentication state or topology information. This means that the driver needs to issue commands at the start of each request to authenticate and » discover the server topology.
Các kết nối cơ sở dữ liệu được duy trì bằng hàm băm bắt nguồn từ máy chủ, cổng và chuỗi URI được sử dụng để xây dựng MongoDB\Driver\Manager. The constructor's array options are not included in this hash.
Ghi chú. Phiên bản trình điều khiển >= 1. 1. 8 và < 1. 2. 0 không tồn tại ổ cắm cho kết nối SSL. Xem » PHPC-720 để biết thêm thông tin.
Mặc dù có những thiếu sót với việc duy trì kết nối SSL khi nào và thông tin cấu trúc liên kết, phiên bản trình điều khiển này hỗ trợ tất cả các tùy chọn ngữ cảnh SSL vì nó sử dụng API luồng của PHP
Hướng dẫn này được tổ chức thành một vài phần trên một vài bài báo. Bài viết đầu tiên này đề cập đến việc cài đặt và cấu hình môi trường phát triển của bạn. PHP là một ngôn ngữ phát triển web tích hợp. Có một số thành phần bạn thường sử dụng cùng với ngôn ngữ lập trình PHP. Nếu bạn đã cài đặt PHP và bạn chỉ muốn bắt đầu với PHP và MongoDB, vui lòng chuyển sang phần tiếp theo của loạt bài này
Hãy bắt đầu với một cái nhìn tổng quan về những gì chúng ta sẽ đề cập trong loạt bài này
Một lưu ý ngắn gọn về PHP và Apache. Bởi vì PHP chủ yếu là một ngôn ngữ web — nghĩa là nó được xây dựng để hoạt động với máy chủ web — chúng tôi sẽ dành chút thời gian ở phần đầu của bài viết này để đảm bảo rằng bạn đã cài đặt và cấu hình đúng PHP và máy chủ web Apache. Có những lựa chọn thay thế, nhưng chúng tôi sẽ tập trung vào PHP và Apache
PHP được phát triển và phát hành lần đầu tiên vào năm 1994 bởi Rasmus Lerdorf. Mặc dù nó có nguồn gốc từ ngôn ngữ C, nhưng cú pháp của PHP trông rất giống Perl từ rất sớm. Một trong những lý do chính cho sự phổ biến rộng rãi của nó là tính đơn giản và bản chất năng động, được diễn giải của việc thực hiện nó.
Bạn sẽ cần cài đặt phần mềm sau trên máy tính của mình để làm theo hướng dẫn này
MacOS Catalina trở lên. Bạn có thể chạy PHP trên các phiên bản cũ hơn nhưng tôi sẽ sử dụng MacOS cho hướng dẫn này
PECL. Kho lưu trữ cho PHP Extensions
Trước tiên, hãy cài đặt các công cụ dòng lệnh vì chúng sẽ được sử dụng bởi Homebrew
Tiếp theo, chúng ta sẽ sử dụng trình quản lý gói để cài đặt mọi thứ. Điều này đảm bảo rằng các phụ thuộc của chúng tôi sẽ được đáp ứng. Tôi thích viết tắt là Homebrew
, hoặc viết tắt là brew
. Để bắt đầu sử dụng brew
, hãy mở terminal app
của bạn và nhập
Điều này tận dụng curl
để kéo xuống các tập lệnh và tệp nhị phân cài đặt mới nhất cho brew
Lời nhắc cài đặt khá đơn giản. Nhập mật khẩu của bạn vào nơi cần thiết để đảm nhận quyền root cho quá trình cài đặt. Khi hoàn tất, chỉ cần nhập thông tin sau để xác minh rằng brew
đã được cài đặt chính xác
Bạn cũng có thể xác minh cài đặt homebrew của mình bằng cách sử dụng brew doctor
. Xác nhận rằng mọi sự cố hoặc thông báo lỗi đã được giải quyết trước khi tiếp tục. Bạn có thể tìm thấy các cảnh báo và những cảnh báo đó thường có thể được bỏ qua một cách an toàn
MacOS 11 mới nhất. 0 Big Sur đi kèm với Apache 2. 4 được cài đặt sẵn nhưng Apple đã loại bỏ một số script quan trọng nên khó sử dụng
Vì vậy, để chắc chắn rằng tất cả chúng ta đều ở trên cùng một trang, hãy cài đặt Apache 2. 4 qua Homebrew và sau đó định cấu hình để chạy trên các cổng tiêu chuẩn [80/443]
Khi tôi viết hướng dẫn này, tôi đã lãng phí rất nhiều thời gian để tìm hiểu điều gì đang xảy ra với phiên bản cài đặt sẵn. Vì vậy, tôi nghĩ tốt nhất là chúng ta nên cài đặt từ đầu bằng Homebrew
Bây giờ, hãy cài đặt phiên bản mới nhất của Apache
Sau khi cài đặt, hãy khởi động dịch vụ
Bây giờ bạn có thể mở trình duyệt web và truy cập vào //localhost:8080
và thấy nội dung tương tự như sau
Máy chủ web Apache tiêu chuẩn không hỗ trợ PHP tích hợp. Do đó, chúng ta cần cài đặt PHP và định cấu hình Apache để nhận dạng và giải thích các tệp PHP
Nếu bạn đã cài đặt các phiên bản PHP trước đó, tôi thực sự khuyên bạn nên dọn sạch mọi thứ bằng cách xóa các phiên bản cũ hơn. Nếu bạn có các dự án trước đó phụ thuộc vào các phiên bản này, thì bạn cần cẩn thận và sao lưu cấu hình cũng như tệp dự án của mình
Homebrew là một cách tốt để người dùng MacOS cài đặt PHP
Khi quá trình này hoàn tất, bạn có thể kiểm tra xem nó đã được cài đặt đúng chưa bằng cách đưa ra lệnh sau từ dấu nhắc dòng lệnh của bạn trong thiết bị đầu cuối
Bạn sẽ thấy một cái gì đó tương tự như thế này
Cài đặt tiện ích mở rộng PHP
Bây giờ chúng tôi đã cài đặt php
, chúng tôi có thể định cấu hình Apache để sử dụng brew
0 để diễn giải nội dung trang web của chúng tôi, dịch các lệnh php
của chúng tôi thay vì hiển thị mã nguồn
PECL [Thư viện cộng đồng tiện ích mở rộng PHP] là kho lưu trữ cho các tiện ích mở rộng PHP, cung cấp thư mục chứa tất cả các tiện ích mở rộng và cơ sở lưu trữ đã biết hoặc tải xuống và phát triển các tiện ích mở rộng PHP. brew
2 là công cụ nhị phân hoặc dòng lệnh [được cài đặt mặc định với PHP] mà bạn có thể sử dụng để cài đặt và quản lý các tiện ích mở rộng PHP. Chúng ta sẽ làm điều đó trong phần tiếp theo này
Cài đặt tiện ích mở rộng PHP MongoDB trước khi cài đặt Thư viện PHP cho MongoDB. Điều đáng chú ý là trải nghiệm trình điều khiển MongoDB đầy đủ được cung cấp bằng cách cài đặt cả tiện ích mở rộng cấp thấp [tích hợp với trình điều khiển C của chúng tôi] và thư viện cấp cao, được viết bằng PHP
Bạn có thể cài đặt tiện ích mở rộng bằng PECL trên dòng lệnh
Để cài đặt tiện ích mở rộng, hãy sao chép dòng sau và đặt nó vào cuối tệp brew
3 của bạn
Sau khi lưu php. ini, khởi động lại dịch vụ Apache và để xác minh cài đặt, bạn có thể sử dụng lệnh sau
Bạn sẽ thấy đầu ra tương tự như sau
Bây giờ bạn đã sẵn sàng bắt đầu sử dụng PHP để thao tác và quản lý dữ liệu trong cơ sở dữ liệu MongoDB của mình. Tiếp theo, chúng tôi sẽ tập trung vào việc chuẩn bị cụm MongoDB của bạn
Khắc phục sự cố cấu hình PHP của bạn
Nếu bạn gặp sự cố khi cài đặt tiện ích mở rộng MongoDB, có một số mẹo giúp bạn xác minh rằng mọi thứ đã được cài đặt và định cấu hình đúng cách
Trước tiên, bạn có thể kiểm tra xem Apache và PHP đã được cài đặt thành công hay chưa bằng cách tạo một thông tin. php ở thư mục gốc của thư mục web của bạn. Trong tệp, thêm nội dung sau
Tiếp theo, chỉnh sửa thông tin. nội dung tệp php thành
Lưu, sau đó làm mới thông tin. trang php. Bạn sẽ thấy một trang có bảng thông tin PHP lớn như thế này
QUAN TRỌNG. Trong các máy chủ sản xuất, việc hiển thị thông tin được hiển thị bởi phpinfo[] trên một trang có thể truy cập công khai là không an toàn
Thông tin mà chúng tôi quan tâm có thể ở những nơi này
“Tệp cấu hình [php. ini] Thuộc tính Path” hiển thị nơi thời gian chạy PHP của bạn đang nhận php của nó. tập tin ini từ. Nó có thể xảy ra rằng mongodb. vì vậy tiện ích mở rộng đã được thêm vào sai php. ini vì có thể có nhiều hơn một
"Thêm vào. ini được phân tích cú pháp” hiển thị các tệp cấu hình PHP bổ sung tiềm năng có thể ảnh hưởng đến cấu hình cụ thể của bạn. Các tệp này nằm trong thư mục được liệt kê bởi phần “Quét thư mục này để biết thêm. ini” trong bảng
Ngoài ra còn có một bảng "mongodb" trông như thế này
Sự hiện diện của nó chỉ ra rằng tiện ích mở rộng MongoDB đã được tải đúng cách và đang hoạt động. Bạn cũng có thể xem số phiên bản của nó để đảm bảo đó là phiên bản bạn định sử dụng
Nếu bạn không thấy phần này, có thể tiện ích mở rộng MongoDB không tải được. Nếu đúng như vậy, hãy tìm thuộc tính “error_log” trong bảng để xem vị trí của tệp nhật ký lỗi PHP, vì nó có thể chứa các manh mối quan trọng. Đảm bảo rằng “log_errors” được đặt thành BẬT. Cả hai đều nằm trong phần “Core” PHP
Nếu bạn đang nâng cấp lên phiên bản PHP mới hơn hoặc đã cài đặt nhiều phiên bản, hãy nhớ rằng mỗi phiên bản cần có phần mở rộng MongoDB và php riêng. tập tin ini
Bắt đầu cụm MongoDB trên Atlas
Bây giờ bạn đã thiết lập môi trường cục bộ của mình, đã đến lúc tạo cơ sở dữ liệu MongoDB để làm việc và tải một số dữ liệu mẫu mà bạn có thể khám phá và sửa đổi
Bắt đầu với cụm M0 trên Atlas ngay hôm nay. Nó miễn phí vĩnh viễn và đó là cách dễ nhất để thử các bước trong chuỗi blog này
Sẽ mất vài phút để cung cấp cụm của bạn, vì vậy trong khi chờ đợi, bạn có thể chuyển sang bước tiếp theo
Thiết lập phiên bản MongoDB của bạn
Hy vọng rằng cụm MongoDB của bạn đã khởi động xong và có thể đã chạy được vài phút
Các hướng dẫn sau đây là chính xác tại thời điểm viết nhưng có thể thay đổi vì chúng tôi luôn cải tiến giao diện người dùng Atlas
Trong giao diện web của Atlas, bạn sẽ thấy một nút màu xanh lục ở phía dưới bên trái màn hình có nội dung "Bắt đầu. " Nếu bạn nhấp vào nó, nó sẽ hiển thị danh sách kiểm tra các bước để thiết lập cơ sở dữ liệu của bạn. Nhấp vào từng mục trong danh sách [bao gồm mục "Tải dữ liệu mẫu"—chúng tôi sẽ sử dụng mục này sau để kiểm tra thư viện PHP] và mục này sẽ giúp bạn thực hiện các bước để thiết lập
Cách nhanh nhất để có quyền truy cập vào dữ liệu là tải bộ dữ liệu mẫu vào cụm của bạn ngay trong bảng điều khiển Atlas. Nếu bạn là người mới, trình hướng dẫn người dùng mới sẽ thực sự hướng dẫn bạn qua quy trình và nhắc bạn tải những thứ này
Nếu bạn đã tạo cụm của mình và muốn quay lại để tải bộ dữ liệu mẫu, hãy nhấp vào dấu chấm lửng [ba dấu chấm] bên cạnh các nút kết nối cụm của bạn [xem hình ảnh bên dưới] rồi chọn brew
4
Làm theo các bước "Bắt đầu", tạo người dùng có "Quyền truy cập đọc và ghi vào bất kỳ cơ sở dữ liệu nào. " Bạn có thể cung cấp cho nó tên người dùng và mật khẩu của sự lựa chọn của bạn. Tạo một bản sao của chúng, bởi vì bạn sẽ cần chúng trong một phút nữa. Sử dụng nút "tự động tạo mật khẩu an toàn" để đảm bảo bạn có một mật khẩu dài, ngẫu nhiên, mật khẩu này cũng an toàn để dán vào chuỗi kết nối của bạn sau này
Thêm địa chỉ IP của bạn vào danh sách truy cập
Khi triển khai ứng dụng có dữ liệu nhạy cảm, bạn chỉ nên đưa địa chỉ IP của máy chủ cần kết nối vào cơ sở dữ liệu của mình vào danh sách trắng. Để đưa địa chỉ IP của máy phát triển của bạn vào danh sách trắng, hãy chọn "Truy cập mạng", nhấp vào nút "Thêm địa chỉ IP", sau đó nhấp vào "Thêm địa chỉ IP hiện tại" và nhấn "Xác nhận. "
Bước cuối cùng của danh sách kiểm tra "Bắt đầu" là "Kết nối với Cụm của bạn. " Chọn "Kết nối ứng dụng của bạn" và chọn "PHP" với phiên bản "PHPLIB 1. 8. "
Nhấp vào nút "Sao chép" để sao chép URL vào bộ đệm dán của bạn. Lưu nó vào cùng một nơi bạn đã lưu tên người dùng và mật khẩu của mình. Lưu ý rằng URL có brew
5 làm trình giữ chỗ cho mật khẩu của bạn. Bạn nên dán mật khẩu của mình vào đây, thay thế toàn bộ phần giữ chỗ, bao gồm các ký tự brew
6 và brew
7
Bây giờ là lúc thực sự viết một số mã PHP để kết nối với cơ sở dữ liệu MongoDB của bạn. Cho đến bây giờ, chúng tôi chỉ cài đặt các thành phần hệ thống hỗ trợ. Trước khi chúng tôi bắt đầu kết nối với cơ sở dữ liệu của mình và sử dụng PHP để thao tác dữ liệu, chúng tôi cần cài đặt Thư viện PHP MongoDB
Composer là công cụ cài đặt được khuyên dùng cho thư viện MongoDB. Trình soạn thảo là một công cụ để quản lý phụ thuộc trong PHP. Nó cho phép bạn khai báo các thư viện mà dự án của bạn phụ thuộc vào và nó sẽ quản lý [cài đặt/cập nhật] chúng cho bạn
Để cài đặt brew
8, chúng ta có thể sử dụng Homebrew
Cài đặt thư viện MongoDB PHP
Khi bạn đã cài đặt brew
8, bạn có thể chuyển sang cài đặt Thư viện MongoDB
Việc cài đặt thư viện sẽ diễn ra trong thư mục gốc của dự án của bạn. Composer không phải là trình quản lý gói theo nghĩa giống như Yum hoặc Apt. Trình soạn thảo cài đặt các gói trong một thư mục bên trong dự án của bạn. Theo mặc định, nó không cài đặt bất cứ thứ gì trên toàn cầu
Đảm bảo rằng bạn đang ở trong cùng thư mục khi bạn sử dụng brew
8 ở trên để cài đặt thư viện
Trong trình chỉnh sửa mã của bạn, hãy tạo một tệp PHP trong thư mục dự án của bạn có tên là khởi động nhanh. php. Nếu bạn đang tham khảo ví dụ, hãy nhập mã sau
brew
5 và brew
5 là tên người dùng và mật khẩu bạn đã tạo trong Atlas và địa chỉ cụm dành riêng cho cụm bạn đã khởi chạy trong Atlas
Lưu và đóng chương trình brew
3 của bạn và chạy nó từ dòng lệnh
Nếu mọi việc suôn sẻ, bạn sẽ thấy một cái gì đó tương tự như sau
Bạn vừa kết nối chương trình PHP của mình với MongoDB và truy vấn một tài liệu từ cơ sở dữ liệu brew
4 trong cụm của bạn. Nếu bạn không thấy dữ liệu này thì có thể bạn đã không tải thành công dữ liệu mẫu vào cụm của mình. Bạn có thể muốn quay lại một vài bước cho đến khi chạy lệnh này sẽ hiển thị tài liệu ở trên
Bảo mật tên người dùng và mật khẩu
Lưu trữ tên người dùng và mật khẩu trong mã của bạn không bao giờ là một ý tưởng hay. Vì vậy, hãy thực hiện thêm một bước nữa để bảo vệ chúng tốt hơn một chút. Thông lệ chung là đặt các loại giá trị nhạy cảm này vào một tệp môi trường, chẳng hạn như brew
5. Sau đó, mẹo sẽ là lấy mã PHP của bạn để đọc các giá trị đó trong. May mắn thay, Vance Lucas đã nghĩ ra một giải pháp tuyệt vời có tên là brew
6. Để bắt đầu sử dụng giải pháp của Vance, hãy tận dụng brew
8
Bây giờ chúng ta đã cài đặt thư viện, hãy tạo tệp brew
5 chứa các giá trị nhạy cảm của chúng ta. Mở trình soạn thảo yêu thích của bạn và tạo một tệp có tên brew
5, đặt các giá trị sau vào đó. Đảm bảo thay thế terminal app
0 và terminal app
1 bằng các giá trị thực mà bạn đã tạo khi thêm người dùng cơ sở dữ liệu vào Atlas
Tiếp theo, chúng ta cần sửa đổi quickstart của mình. chương trình php để lấy các giá trị bằng cách sử dụng brew
6. Hãy thêm một cuộc gọi đến thư viện và sửa đổi chương trình khởi động nhanh của chúng tôi để trông giống như sau. Lưu ý những thay đổi trên dòng 5, 6 và 9
Tiếp theo, để đảm bảo rằng bạn không xuất bản thông tin đăng nhập của mình vào terminal app
3 hoặc bất kỳ kho lưu trữ mã nguồn nào mà bạn đang sử dụng, hãy nhớ thêm một. gitignore [hoặc tương đương] để ngăn lưu trữ tệp này trong kho lưu trữ của bạn. Đây là tệp terminal app
4 của tôi
terminal app
4 của tôi bao gồm các tệp được tận dụng như một phần của thư viện của chúng tôi—những tệp này không nên được lưu trữ trong dự án của chúng tôi
Nếu bạn muốn tận dụng các tệp dự án của tôi, vui lòng truy cập kho lưu trữ github của tôi, sao chép, rẽ nhánh và chia sẻ phản hồi của bạn trong Cộng đồng
Phần bắt đầu nhanh này nhằm mục đích giúp bạn thiết lập để sử dụng PHP với MongoDB. Bây giờ bạn đã sẵn sàng chuyển sang bài viết tiếp theo trong loạt bài này. Vui lòng liên hệ với tôi trong Cộng đồng nếu bạn có bất kỳ câu hỏi nào về bài viết này hoặc bất kỳ điều gì liên quan đến MongoDB