Lỗi 1897517 - php-fpm không thể ghi vào socket của redis php-fpm không thể ghi vào ổ cắm của redis Show Trong bài viết này, chúng ta sẽ tìm hiểu lý do tại sao sử dụng kết nối liên tục là một phương pháp hay và cách thiết lập khung Symfony để sử dụng kết nối liên tục trên máy chủ Redis Tại sao sử dụng các kết nối liên tục?Máy chủ Redis được thiết kế để xử lý nhiều thao tác mỗi giây khiến nó trở thành một ứng cử viên sáng giá cho công cụ lưu trữ bộ đệm dữ liệu Nhưng kết nối với máy chủ là một hoạt động tốn kém và do đó tốc độ kết nối nên được giữ ở mức thấp nhất có thể Một giải pháp là sử dụng proxy như Twemproxy hoặc bạn có thể sử dụng các kết nối liên tục để chúng được PHP sử dụng lại để phục vụ nhiều yêu cầu Sử dụng các kết nối liên tục với PHP chỉ hoạt động nếu
Điều này là bắt buộc nếu bạn đang sử dụng
Cái này dễ kiểm tra. Bạn có thể sử dụng CLI hoặc phương pháp Điều này phụ thuộc vào thiết lập của bạn. Về cơ bản, với Apache, bạn có thể đang sử dụng
PHP-FPM là cái tôi thích nhất. Với thiết lập này, một nhóm các quy trình PHP được bắt đầu và mỗi quy trình chờ Apache gửi yêu cầu để xử lý. Khi yêu cầu đã được phục vụ, thì quá trình sẽ chờ một yêu cầu khác. Vì vậy, nó không bị giết và do đó có thể sử dụng các kết nối liên tục tới Redis Cách thiết lập SymfonySymfony cho phép bạn dễ dàng sử dụng Redis làm bộ điều hợp bộ đệm. Bạn chỉ cần đặt Redis DSN như được giải thích trong tài liệu. h Nhưng cài đặt mặc định của bộ điều hợp này sử dụng các kết nối không liên tục theo giá trị mặc định của liên tục theo tài liệu. https. // giao hưởng. com/doc/current/components/cache/adapters/redis_adapter. html Vì vậy, bạn cần sử dụng bộ điều hợp tùy chỉnh. services: Thời gian chờ 15 giây được coi là thời gian chờ tốt nhưng bạn có thể thay đổi thời gian này để phù hợp với nhu cầu của mình. Hãy cẩn thận với thời gian chờ bằng 0 vì nó có thể tạo ra sự cố (https. //github. com/phpredis/phpredis/issues/1265) Và sau đó tạo một nhóm sử dụng nhà cung cấp này framework: Nếu bạn muốn sử dụng thiết lập này cho nhóm mặc định framework: Hãy cẩn thậnSử dụng các kết nối liên tục đến Redis có nghĩa là kết nối không bị đóng cho đến khi quá trình PHP chết. Vì vậy, nếu nhóm PHP-FPM của bạn tạo ra nhiều quy trình PHP thì những quy trình này có thể tạo ra nhiều kết nối hơn so với khả năng xử lý của máy chủ Redis của bạn và điều này sẽ gây ra lỗi đạt được số lượng máy khách tối đa Để cài đặt tiện ích mở rộng PECL cho nhiều phiên bản PHP, hãy lặp lại cài đặt tiện ích mở rộng PECL cho từng phiên bản PHP Tiện ích mở rộng PHP này cung cấp cho khách hàng quyền truy cập vào máy chủ Redis. Bản thân nó không phải là Redis. Redis là một máy chủ cung cấp kho lưu trữ khóa/giá trị. Khi bạn cài đặt tiện ích mở rộng Redis PHP, nó sẽ cho phép PHP giao tiếp với máy chủ Redis. Đọc thêm về cách cài đặt máy chủ Redis Cài đặt tiện ích mở rộng Redis trên PHP 7. XTrong các ví dụ được hiển thị, thay thế "7. X" bằng phiên bản PHP của ứng dụng của bạn (ví dụ: "7. 0") Để cài đặt tiện ích mở rộng PHP Redis trên PHP 7. 0, 7. 1, 7. 2, 7. 3 hoặc 7. 4, SSH vào máy chủ của bạn với quyền root và chạy các lệnh sau sudo apt-get -y install gcc make autoconf libc-dev pkg-config sudo pecl7.X-sp install redis Khi được nhắc với những điều sau đây enable igbinary serializer support? [no] : enable lzf compression support? [no] : nhấn Enter để chấp nhận mặc định cả hai lần Sau khi cài đặt, hãy tạo tệp cấu hình cho tiện ích mở rộng và khởi động lại PHP bằng cách chạy các lệnh sau với quyền root Khi nói đến tốc độ, không có máy chủ Redis nào sánh kịp. Là một máy chủ cơ sở dữ liệu NoSQL, nó cung cấp tốc độ lưu trữ và truy xuất dữ liệu tuyệt vời. Bên cạnh đó, Redis có các chức năng nổi bật giúp làm việc liền mạch với các dữ liệu khác nhau, kể cả những dữ liệu phức tạp. Tính dễ sử dụng và các chức năng phức tạp của Redis không chỉ làm cho nó nổi bật mà còn cho phép tiêu chuẩn hóa ngày càng tăng của nó như một cơ sở dữ liệu chính cho người dùng cá nhân và doanh nghiệp Dưới đây, chúng tôi sẽ hướng dẫn chi tiết các bước giúp bạn cài đặt Redis trên Ubuntu 20. 04 phần mềm. Trong hướng dẫn này, bạn sẽ nhận được tất cả thông tin cần thiết từ cài đặt đến định cấu hình máy chủ Redis bên ngoài để sử dụng làm trình xử lý phiên cho ứng dụng PHP chạy trên Ubuntu 20. 04 Bắt đầuĐể thực hiện các bước, bạn sẽ cần hai máy chủ cơ sở dữ liệu (giọt nhỏ) khác nhau nằm trong cùng một trung tâm dữ liệu có bật mạng riêng. Bao gồm các
Bước 1 - Cài đặt Redis ServerBước đầu tiên của chúng tôi là cài đặt máy chủ Redis trên Ubuntu 20. 04. Sau khi hoàn tất, hãy đảm bảo rằng máy chủ đang hoạt động trên Redis Droplet của chúng tôi Trong hướng dẫn này, chúng tôi sẽ sử dụng Kho lưu trữ gói cá nhân (PPA). Chúng tôi thực sự khuyên bạn nên sử dụng PPA vì lý do bảo mật. So với các kho lưu trữ của bên thứ ba khác, PPA ổn định, dễ cài đặt và trên hết, kho lưu trữ được thiết kế cho người dùng Ubuntu. PPA cho phép bạn có sẵn phiên bản phần mềm mới nhất, ngay cả đối với phần mềm bạn không tìm thấy trong kho chính thức của Ubuntu Sử dụng PPA từ một nguồn trái phép là một điều tối kỵ. Đảm bảo rằng bạn chỉ nhận được PPA từ các nguồn xác thực và đã được xác minh. Bạn có thể thêm kho lưu trữ PPA bằng lệnh 1 sudo add - apt - kho lưu trữppa. chris - lea / return - máy chủ Nhấn phím Enter để xác nhận. Sau khi xác nhận, chúng tôi sẽ cập nhật bộ đệm của trình quản lý gói bằng lệnh sau 1 sudo apt - nhận cập nhật Tiếp theo, chúng ta sẽ cài đặt Redis bằng lệnh 1 sudo apt - nhận cài đặt trả về - máy chủ Khi bạn thực hiện lệnh, bạn sẽ cài đặt Redis trên máy chủ của mình. Hãy kiểm tra cài đặt bằng lệnh 1 return - cli ping Khi bạn nhấn lệnh, bạn sẽ thấy một phiên bản Redis đang chạy trên máy chủ cục bộ trên cổng 6379. Ngoài ra, sẽ có một phản hồi tên là PONG. Nếu bạn thấy những điều này, điều đó có nghĩa là bạn đã hoàn thành bước đầu tiên thành công. Để có hướng dẫn chi tiết về cài đặt và bảo mật Redis, bạn có thể xem hướng dẫn của chúng tôi Cách cài đặt và bảo mật Redis trên Ubuntu 18. 04 Tiếp theo, hãy chuyển sang bước tiếp theo- định cấu hình Redis Bước 2 - Trả lại cấu hình để chấp nhận kết nối bên ngoàiMục tiêu chính của việc định cấu hình Redis là chấp nhận các kết nối đến từ bên ngoài. Tại sao? . Nói một cách đơn giản hơn, bạn sẽ có quyền truy cập từ bên trong máy chủ mà bạn đã cài đặt Redis. localhost, and there is a restriction to connect from anywhere else. In simpler terms, you´ll have access from inside the server where you have installed Redis. Trước tiên, hãy xem thông tin chi tiết về giao diện mạng của bạn bằng cách sử dụng lệnh ifconfig . 1 sudoifconfig Bạn sẽ nhận được đầu ra dưới đây 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 eth0 Link encap. Ethernet HWaddr 04. 01. 63. 7e. a4. 01 inet addr. 188. 166. 77. 33188.166.77.33 Truyền hình. 188. 166. 127. 255188.166.127.255 Mặt nạ. 255. 255. 192. 0 inet6 addr. fe80. . 601. 63ff. fe7e. a401 / 64 Phạm vi. Liên kết LÊN PHÁT SÓNG CHẠY ĐA NĂNG MTU. 1500 Số liệu. 1 RX gói. 3497 lỗi. 0 rớt. 0 bị tràn. 0 khung. 0 TX gói. 3554 lỗi. 0 rớt. 0 bị tràn. 0 nhà cung cấp dịch vụ. 0 va chạm. 0 txqueuelen. 1000 RX byte. 4895060 (4. 8 MB) TX byte. 619070 (619. 0 KB)
eth1 Link encap. Ethernet HWaddr 04. 01. 63. 7e. a4. 02 inet addr. 10. 133. 14. 9 Truyền hình. 10. 133. 255. 255 Mặt nạ. 255. 255. 0. 0 inet6 addr. fe80. . 601. 63ff. fe7e. a402 / 64 Phạm vi. Liên kết LÊN PHÁT SÓNG CHẠY ĐA NĂNG MTU. 1500 Số liệu. 1 RX gói. 8 lỗi. 0 rớt. 0 bị tràn. 0 khung. 0 TX gói. 7 lỗi. 0 rớt. 0 bị tràn. 0 nhà cung cấp dịch vụ. 0 va chạm. 0 txqueuelen. 1000 RX byte. 648 (648. 0 B) TX byte. 578 (578. 0 B) Tại giao diện eth1, bạn sẽ tìm thấy inet_addr . Ở đây chúng ta có 10. 133. 14. 9 . Chúng tôi sẽ sử dụng địa chỉ IP này trong các bước sắp tới để kết nối máy chủ redis từ máy chủ web. Bước 3—Ràng buộc LocalhostBạn có thể tự do sử dụng trình chỉnh sửa mã mà mình chọn (Atom và Visual Studio Code là những mã phổ biến nhất) Bây giờ, hãy mở tệp / etc / return / trả về. conf và tìm dòng chứa định nghĩa bind . Bạn nên thêm địa chỉ IP mạng riêng của mình vào dòng. 1 sudo vim / vv / trả lại / trả lại. conf /etc/returns/returns. conf 1 ràng buộc localhost 10. 133. 14 Bạn có thể thấy localhost , thay vì 127. 0. 0. 1 . Đừng lo, bạn chỉ cần thêm địa chỉ IP riêng của mình. Tiếp theo, khởi động lại dịch vụ Redis để áp dụng các thay đổi. Sử dụng lệnh bên dưới để khởi động lại máy chủ redis. 1 sudo dịch vụ trả về - máy chủ khởi động lại Đối với những người dùng đã cài đặt Redis bằng ứng dụng một cú nhấp chuột, bạn sẽ thực hiện theo lệnh được đề cập bên dưới để khởi động lại máy chủ của mình 1 sudo dịch vụ return khởi động lại Khi bạn khởi động lại máy chủ redis, bất kỳ máy chủ nào có trong cùng một mạng riêng sẽ tự động kết nối với phiên bản Redis này mà không cần phải thực hiện riêng lẻ Bước 4— Thiết lập mật khẩu máy chủ trở lạiBạn có thể bỏ qua bước này nếu đang sử dụng bản cài đặt Redis cho mục đích thực hành hoặc đào tạo. Tuy nhiên, bạn nên thiết lập mật khẩu cho máy chủ redis nếu muốn thêm một lớp bảo mật bổ sung cho cài đặt Redis của mình. Hãy để chúng tôi sửa đổi tệp cấu hình giống như chúng tôi đã làm ở bước trước. Sử dụng lệnh để chỉnh sửa 1 sudo vim / vv / trả lại / trả lại. conf Bỏ ghi chú dòng chứa requirepass và đặt mật khẩu mạnh. /etc/returns/returns. conf 1 requirepassStrongPassword Khởi động lại dịch vụ Redis để phản ánh những thay đổi bạn đã thực hiện. Sử dụng lệnh để khởi động lại 1 sudo dịch vụ trả về - máy chủ khởi động lại Bước 5 - Trả lại kết nối và kiểm tra xác thựcTrong bước này, chúng tôi sẽ kết nối với dịch vụ Redis từ bên trong máy redis để đảm bảo rằng tất cả các thay đổi được thực hiện đều hoạt động trơn tru như mong đợi. Để kết nối, sử dụng lệnh bên dưới 1 return - cli - h 10. 133. 14. 9 Ở đây, ngay cả khi bạn bỏ qua việc đề cập đến tên máy chủ, nó vẫn sẽ chạy. Mục đích chính của chúng tôi là đảm bảo dịch vụ Redis chấp nhận các kết nối một cách liền mạch 1 10. 133. 14. 9. 6379> Có thể bạn gặp lỗi AUTH khi cố truy cập dữ liệu từ mật khẩu đã xác định. 1 10. 133. 14. 9. 6379> phím * Đầu ra của bạn sẽ trông giống như thế này 1 2 ĐẦU RA. (lỗi) NOAUTH Xác thực bắt buộc. Để xác thực, hãy chạy lệnh AUTH cùng với mật khẩu bạn đã xác định trong /< /a> etc / return / return< /a>. Tệp conf . 1 10. 133. 14. 9. 6379> AUTH StrongPassword Tiếp theo, chạy lại lệnh 1 10. 133. 14. 9. 6379> phím * Lần này, bạn sẽ nhận được phản hồi OK thay vì lỗi. Bạn sẽ nhận được đầu ra như dưới đây 1 2 ĐẦU RA. (trống danh sách hoặc đặt) Đầu ra danh sách trống hoặc đặt có nghĩa là máy chủ Redis trống. Đó là bởi vì chúng tôi chưa định cấu hình máy chủ web dưới dạng trình xử lý phiên. Ghi chú. Trước khi tiếp tục, hãy đảm bảo phiên SSH được mở và kết nối với redis-cli. Trong các bước sắp tới, chúng tôi sẽ quay lại lời nhắc redis-cli để xác minh xem dữ liệu phiên có được lưu trữ đúng cách hay không sau khi chúng tôi thực hiện các thay đổi cần thiết đối với máy chủ web Bước 6 - Cài đặt Redis Extension trên Web ServerCác bước tiếp theo sẽ được thực hiện trên máy chủ web. Chúng ta cần cài đặt PHP Redis extension cho PHP để kết nối với Redis server Trước tiên, hãy cập nhật bộ đệm của trình quản lý gói của bạn bằng cách chạy lệnh 1 sudo apt - nhận cập nhật Tiếp theo, cài đặt gói php5 - redis . 1 sudo apt - nhận cài đặt php5 - return Bạn đã sẵn sàng để kết nối với Redis Bước 7 - Quay lại Thiết lập làm Trình xử lý phiên mặc định trên Máy chủ WebPHP có trình xử lý phiên mặc định. Trong bước này, chúng tôi sẽ chỉnh sửa php. ini trên máy chủ web để thay đổi cài đặt mặc định. php. ini vị trí tệp phụ thuộc vào ngăn xếp hiện tại.
Nếu bạn không chắc chắn về vị trí của php chính của mình. ini , hãy sử dụng hàm phpinfo() . Đặt đoạn mã sau vào tệp có tên info. php bên trong thư mục gốc web của bạn. 1 2 <?php phpinfo(); Khi bạn đang cố truy cập tập lệnh từ trình duyệt của mình, hãy tìm kiếm hàng chứa "Tệp cấu hình đã tải. ”Bạn sẽ tìm thấy vị trí chính xác của php chính. Đã tải ini . Đảm bảo xóa thông tin. php vì tệp này có tất cả nội dung nhạy cảm trong môi trường của bạn. Sau đó, mở php. ini và tìm dòng chứa phiên. save_handler . Giá trị mặc định sẽ là tệp , đảm bảo thay đổi thành redis . Trên môi trường LAMP 1 $ sudo vim / vv / php5 / apache2 / php. ini Trên môi trường LEMP 1 $ sudo vim / vv / php5 / fpm / php. ini /etc/php5/fpm/php. TRONG 1 phiên. save_handler = return Tiếp theo, bỏ ghi chú phiên. save_path và sửa đổi giá trị để chứa chuỗi kết nối Redis. Nội dung phải theo định dạng bên dưới. 1 tcp. //IPADDRESS. PORT?auth=REDISPASSWORD /etc/php5/fpm/php. TRONG 1 phiên. save_path = "tcp. //10. 133. 14. 9. 6379?auth=yourverycomplexpasswordhere" Sử dụng mật khẩu chúng tôi đã thiết lập trong trường hợp bạn không sử dụng mật khẩu đã thiết lập, hãy cung cấp tham số auth khi định cấu hình Redis. Bây giờ, hãy lưu tệp và khởi động lại dịch vụ php trên cả hai môi trường. Trên môi trường LAMP 1 sudo dịch vụ apache2 khởi động lại Trên môi trường LEMP 1 sudo dịch vụ php5 - fpm khởi động lại Bước 8 - Kiểm tra Xử lý phiên RedisỞ bước cuối cùng, chúng tôi cần một tập lệnh hoặc ứng dụng PHP để đảm bảo rằng các phiên của bạn hiện được xử lý bởi Redis. Chúng tôi sẽ sử dụng một tập lệnh đơn giản triển khai bộ đếm – mỗi lần bạn tải lại trang, số lượng bản in sẽ tăng lên Tạo tệp có tên demo. php trên máy chủ web và giữ nó bên trong thư mục gốc tài liệu của bạn. 1 sudo sudo vim / usr / chia sẻ / nginx / html / kiểm tra. php Sau đó, thay đổi / usr / chia sẻ< /a> / nginx / html để phản ánh đường dẫn gốc tài liệu của bạn. /usr/share/nginx/html/demo. php 1 2 3 4 5 6 7 <?php // bộ đếm đơn giản cho các phiên kiểm tra. sẽ tăng lên trên mỗi lần tải lại trang
session_start(); $đếm = đặt($_SESSION['count']) ? $_SESSION[ a> a> a> a>'đếm'] . 1; echo $count; $_SESSION['count'] = ++ $đếm;< /a> Tiếp theo, bạn phải trỏ trình duyệt của mình tới http. //web/demo. php để truy cập tập lệnh. Chương trình sẽ tăng số mỗi khi bạn tải lại trang. Bây giờ bạn sẽ có thông tin phiên được lưu trữ trên máy chủ Redis. Để xác minh, bạn phải quay lại phiên SSH của mình trên máy redis bằng cách sử dụng redis - clicli - a> cli - a> cli - a> cli - a> . Lấy lại nội dung bằng phím * . 1 10. 133. 14. 9. 6379> phím * Bạn sẽ thấy đầu ra bên dưới 1 2 ĐẦU RA. 1) "PHPREDIS_SESSION. j9rsgtde6st2rqb6lu5u6f4h83" Đầu ra xác minh rằng tất cả thông tin được lưu trữ an toàn trên máy chủ redis. Nếu bạn muốn kết nối các máy chủ web bổ sung, bạn có thể làm theo cách tương tự Phần kết luậnRedis là cơ sở dữ liệu NoSQL cho phép lưu trữ nhiều dữ liệu phi cấu trúc. Rất ít cơ sở dữ liệu có thể so sánh với các chức năng và sự đơn giản của máy chủ redis. Mức độ phổ biến ngày càng tăng của nó liên tục khiến nó trở thành sản phẩm bắt buộc phải có với ít sản phẩm thay thế so với các tính năng rộng rãi của nó Để nâng cao kiến thức của bạn về các ứng dụng PHP và cách sử dụng chúng, bạn có thể xem các hướng dẫn sau từ blog của chúng tôi Làm cách nào để sử dụng Redis trong PHP?php // Đang kết nối với máy chủ Redis trên localhost $redis = new Redis(); . 0. 0. 1', 6379); . "
Đâu là sự khác biệt giữa Predisvà Phpredis?PhpRedis là một phần mở rộng PHP để giao tiếp với bộ lưu trữ Redis. Predis là giải pháp thay thế cho PhpRedis trên PHP thuần túy và không yêu cầu bất kỳ phần mở rộng C bổ sung nào theo mặc định, nhưng nó có thể được ghép nối tùy chọn với phpiredis
Làm cách nào để cài đặt tiện ích mở rộng PHP Redis trên Windows?Tải xuống php_redis. dll từ PECL libs. . Sao chép php_redis. dll và dán vào thư mục sau trong thư mục tiện ích mở rộng của XAMPP Server (D. \XAMPP\php\ext ) mở php. . Khởi động lại máy chủ XAMPP Mở phpinfo() của XAMPP server và search Redis, nếu tìm thấy tức là bạn đã tích hợp Redis với PHP thành công Làm cách nào để cài đặt Phpredis trên Linux?Cài đặt phpredis trên CentOS 8 . Cài đặt tiện ích yum. . Bước 2 – Kích hoạt và cài đặt repo EPEL trên CentOS 8. . Bước 3 – Cài đặt remi repo cho PHP 7. 4 và php74-php-pecl-redis5. . Bước 4 – Đặt phiên bản PHP mặc định. . Bước 5 – Tìm kiếm gói phpredis trên CentOS 8. . Bước 6 – Cài đặt phpredis trên CentOS 8 |