All Posts By

L

[2016/12/17] Server is Up to Date

Đã rất lâu rồi không cập nhật Software mới nhất cho Web Server, thôi thì dành riêng một buổi để nâng cấp một loạt.

Như thường lệ, các Package của CentOS cập nhật bằng yum, còn các Software thì Compile thủ công từ Source.

– Trọng tâm của đợt cập nhật này là phiên bản PHP mới ra lò 7.1.0: mặc định sử dụng PHP 7.1 cho toàn Server thay cho PHP 7.0
– Theo đó sử dụng riêng một bản PHP 7.1.0 [No Session] cho WordPress
– PHP 7.0.10 -> 7.0.14
– Bỏ PHP 7.0 [No Session]
– PHP 5.6.25 -> 5.6.29
– MariaDB 10.1.16 -> 10.1.20
– Hitch 1.2.1 -> 1.4.3
– Varnish 4.1.3 -> 5.0.0
– Memcached 1.4.31 -> 1.4.33

Tùy chỉnh: Chuyển Child Processes của PHP 7.0 FPM từ dynamic sang ondemand.

Remake trang Store

Trang Store hiện tại đang sử dụng WooCommerce cùng với Theme Sommerce Shop, thiết kế bởi YIThemes.

So với hiện tại thì Sommerce Shop đã trở nên rất lỗi thời cả về mã nguồn lẫn layout. Sommerce Shop có giá khá là đắt trong Theme Forest, những 64$ lận. Đây là mức giá cao nhất của các Theme dành cho WordPress trong ThemeForest.
Tuy nhiên có vẻ tác giả hơi lười cập nhật cho Theme này. Lần cập nhật gần nhất cách đây 3 tháng nhưng chỉ với mục đích sửa lại một số hàm cho tương thích với PHP 7 mà thôi.
Với xu thế hiện tại thì Sommerce Shop là một Theme nghèo nàn về chức năng, kém tùy biến, nặng nề, design lạc hậu.

Chính vì vậy mình quyết định làm lại toàn bộ trang Store, với dự định sử dụng Theme Gecko.
Gecko là một Theme hỗ trợ AJAX mạnh, tính tùy biến cao hơn Sommerce Shop và nhất là bắt kịp xu thế clear design với tiêu chí thoáng đãng, to, rõ ràng.

Store vẫn là trang con trong Network và chỉ là một Store trưng bày với mục đích thử nghiệm mã nguồn, không phải là trang buôn bán.

[2016/09/01] Sử dụng phiên bản PHP không hỗ trợ Session cho WordPress

Khái niệm Session trong PHP: http://php.net/manual/en/book.session.php

Mặc định, khi Compile PHP sẽ đi kèm Session.

Việc sử dụng Session có một nhược điểm, thuật ngữ tiếng anh gọi là “Session Locking”. Nôm na là trong phiên làm việc, Session sẽ bị khóa, và các Session khác phải chờ cho tới khi Session đó hoàn thành (hoặc khi session_write_close được gọi) mới được xử lý. Vì vậy nếu có nhiều phiên Session liên tiếp thì đây chính là nơi thắt cổ chai trong toàn bộ quá trình giao tiếp giữa Server với trình duyệt.
Session Locking là nhược điểm, nhưng cũng chính là điều cần thiết để tránh hiện tượng Session bị thay đổi ngay trong quá trình đang xử lý, thuật ngữ tiếng Anh gọi là “Race Conditions”. Cũng giống như việc khóa ROW của MySQL với Table dạng MyISAM.

Nhưng với WordPress, việc PHP hỗ trợ Session là vô nghĩa. Lý do bởi trong mã nguồn của WordPress chỉ sử dụng Cookie chứ không sử dụng chút nào Session. Thậm chí việc bật Session còn làm WordPress trở nên ỳ ạch hơn, do có thể có một hay vài Session nào đó đang xử lý và việc hiển thị trang phải chờ cho tới khi Session đó được hoàn thành.
Ví dụ dễ nhận thấy là trong quá trình WordPress Update hay bật/tắt Plugin nào đó, việc chuyển trang trong WordPress sẽ phải chờ tới khi quá trình Update hoàn thành (hoặc tệ hơn là timeout).

Kết hợp với việc Server cây nhà lá vườn, điều kiện có thừa nên từ hôm nay sẽ sử dụng 1 bản PHP được Compile không hỗ trợ Session để dành riêng cho WordPress. Phiên bản PHP sử dụng là 7.0, đảm bảo hiệu năng tốt nhất và cập nhật những bản vá một cách nhanh nhất.

Sử dụng PHP không hỗ trợ Session sẽ kéo theo một số Plugin hay Theme cho WordPress không hoạt động được (hoặc ra trang ERROR nếu Enable). Trong tình huống này là Plugin WP Ajaxify Comments và Theme Enfold.
WP Ajaxify Comments là một Plugin rất hay giúp những Comments được gửi sẽ hiển thị dạng AJAX thay vì Load lại trang. Còn Enfold là một Theme rất đẹp, nhẹ và nhiều chức năng dành cho WordPress. Trong danh sách Best Seller của ThemeForest thì Enfold đứng thứ 3. Mấy hôm trước đã có ý định sử dụng Enfold cho trang Blog, và thực sự đã bắt tay vào chỉnh sửa rất nhiều thứ để hoàn thiện Enfold, nhưng nay thật tiếc nuối phải chuyển sang một Theme khác. Thực sự rất tiếc.

Để đảm bảo tính tương thích, các mã nguồn khác (như vBulletin) vẫn sẽ sử dụng bản PHP có hỗ trợ Session.