Hai bản, một sản phẩm
Toutadmin tồn tại dưới hai bản: một chạy trên Node.js, một trên PHP. Đây không phải hai sản phẩm, cũng không phải một bản rút gọn và một bản đầy đủ. Vẫn là 51 không gian ấy, vẫn lược đồ 142 bảng ấy, vẫn 16 ngôn ngữ ấy, vẫn những màn hình ấy. Trang này nói điều gì thực sự chia tách chúng — và điều đó rất ít.
Vì sao có hai#
Một sản phẩm cho doanh nghiệp phải cài được ở nơi doanh nghiệp vốn đã ở. Có nơi có máy
chủ, có systemd và một quản trị viên; có nơi chỉ có hosting dùng chung bốn
euro một tháng và một tài khoản FTP. Bản Node hướng tới nhóm thứ nhất, bản PHP hướng tới
nhóm thứ hai. Từ chối nhóm thứ hai là từ chối một nửa số doanh nghiệp cần công cụ quản
lý hơn cả.
Những gì giống hệt#
| Hạng mục | Node | PHP |
|---|---|---|
| Không gian nghiệp vụ | 51 | 51 |
| Bảng trong cơ sở dữ liệu | 142 | 142 |
| Cột | 1311 | 1311 |
| Ngôn ngữ giao diện | 16 | 16 |
| Khoá dịch | 2765 | 2792 |
| Mô-đun tuỳ chọn | 7 | 7 |
| Sự kiện webhook | 8 | 8 |
| Tài nguyên API | 9 | 9 |
Vì lược đồ là một, cơ sở dữ liệu chuyển từ bản này sang bản kia mà không cần
chuyển đổi gì: dừng bên này, chép app.sqlite cùng các thư mục tệp,
khởi động bên kia. Mật khẩu vẫn dùng được — cả hai bản đọc cùng một định dạng băm. Đó là
phép thử ngang bằng thành thật nhất, và nó đã qua.
Những gì khác nhau#
Hình dạng vài địa chỉ#
531 đường dẫn ở phía Node, 513 ở phía PHP. Khoảng chênh này không phải là thiếu sót: vẫn là những chức năng ấy, chỉ viết gọn hơn.
-
API. Node khai báo chín tài nguyên từng cái một
(
/api/v1/collaborateurs,/api/v1/services…); PHP phục vụ chúng dưới một đường dẫn có tham số. Cả chín đều trả lời, gốc công bố đủ chín, và một bài kiểm thử gọi từng cái để chứng minh. - Cài đặt. Node dẫn qua năm bước, PHP gói trong một trang và một lần gửi. Vẫn hỏi năm thông tin ấy: ngôn ngữ, yêu cầu hệ thống, doanh nghiệp, số ngày phép năm, tài khoản quản trị.
-
Quyền xuyên suốt. Node có một đường dẫn cho mỗi quyền, PHP chỉ một
đường dẫn có tham số
/admin/droits/{flag}.
Hai mươi tám khác biệt về hình dạng này không được khẳng định theo trí nhớ: tệp
tests/test_parity.php chạy thử từng cái một.
Vòng quét định kỳ#
Node mang sẵn bộ lập lịch của nó: máy chủ chạy thường trực nên tự thức dậy. PHP chỉ sống
trong lúc có yêu cầu: tám thao tác ấy đi qua tools/cron.php, do cron của
nhà cung cấp hosting gọi. Cùng mã nghiệp vụ, cùng kết quả, khác cái kích hoạt.
Ngày tháng#
Node viết ngày tháng bằng Intl có sẵn trong V8. PHP cũng vậy khi có phần mở
rộng intl — cùng bộ máy ICU, kết quả giống nhau tới từng ký tự. Khi thiếu
nó, tên thứ và tên tháng lấy từ từ điển dịch: ngày vẫn đúng và vẫn được dịch, nhưng thứ
tự các thành phần có thể khác ở vài ngôn ngữ.
Những gì tưởng khác mà lại không#
| Chủ đề | Ở cả hai bản |
|---|---|
| Mã QR (xác thực hai bước) | Bộ mã hoá viết tay ở phía PHP, đã đối chiếu từng byte với thư viện dùng ở phía Node, trên mười sáu độ dài văn bản. |
| Kho lưu sao lưu | tar.gz viết không phụ thuộc thư viện nào ở cả hai phía, cùng nội dung, cùng mã băm SHA-256. |
| Hộp thư kế toán IMAP | Trình khách IMAP viết ngay trong sản phẩm ở cả hai phía. |
| PDF, CSV, nhập dữ liệu | Viết trong sản phẩm, tệp xuất ra như nhau. |
| Nhật ký kiểm toán | Cùng cách móc xích mã băm: sửa một dòng là đứt xích, ở cả hai phía. |
| Chính sách bảo mật HTTP | Cùng tiêu đề, cùng CSP dùng giá trị một lần, cùng việc không có JavaScript nào không thể thiếu. |
Nên chọn bản nào#
| Hoàn cảnh của bạn | Bản |
|---|---|
| Hosting dùng chung, truy cập FTP, không có dòng lệnh | PHP — đúng trường hợp nó nhắm tới |
Máy chủ riêng, systemd, có quản trị viên | Node |
| Bạn vốn đã quản trị được một trong hai | Bản đó. Sự ngang bằng khiến lựa chọn này đảo lại được. |
| Nhiều người dùng cùng lúc | Node — một tiến trình thường trực, cơ sở dữ liệu đã mở sẵn |
| Bạn còn phân vân | PHP — ít bộ phận phải trông nom hơn, mà chuyển sang Node vẫn chỉ là chép tệp |
Sự ngang bằng được giữ ra sao#
Nó không phải một ý định mà là một phép kiểm. Mỗi lần thay đổi đều chạy bốn phép đối chiếu:
- Đường dẫn — rút ra từ hai phía rồi so; mọi chênh lệch đều phải là một khác biệt đã ghi rõ.
- Hàm — tên mà mỗi mô-đun đưa ra ngoài, so từng mô-đun một.
- Lược đồ — đọc bảng và cột từ cả hai cơ sở dữ liệu rồi so.
- Màn hình — chạy hai bản cạnh nhau và cho một trình duyệt thật đi qua từng trang, so mã trả về và cấu trúc.
Bốn lượt này đã tìm ra những lỗi có thật — trong đó hai lỗi nằm ở cả hai bản. Chính điều đó khiến chúng đáng làm: một sự ngang bằng không đo được là sự ngang bằng đã mất mà không hay.
Thêm vào đó là các bộ kiểm thử: 802 ca ở phía Node, 572 ở phía PHP, tổng cộng 1374.
Cài bản Node
Dịch vụ, proxy ngược, TLS, sao lưu, nâng cấp.
Cài bản PHP
Hosting dùng chung, quyền truy cập, cron, TLS.
Tài liệu Toutadmin — dựng ngày 2026-09-13. Trang độc lập, tách rời phần mềm.