İki sürüm, tek ürün
Toutadmin iki nüsha hâlinde vardır: biri Node.js üzerinde, öteki PHP üzerinde çalışır. Bu ne iki ayrı üründür ne de biri kısaltılmış biri tam iki sürüm. Aynı 51 alan, 142 tablolu aynı şema, aynı 16 dil, aynı ekranlar. Bu sayfa onları gerçekte neyin ayırdığını söylüyor — ve ayıran şey pek az.
Neden iki#
Kurumsal bir ürün, şirketin zaten bulunduğu yere kurulabilmelidir. Kimi şirketin sunucusu,
systemd'si ve bir yöneticisi vardır; kiminin ise ayda dört euroluk paylaşımlı
barındırması ve bir FTP erişimi. Node sürümü birincilere, PHP sürümü ikincilere seslenir.
İkincileri geri çevirmek, yönetim aracına en çok ihtiyaç duyan şirketlerin yarısını geri
çevirmek olurdu.
Bire bir aynı olanlar#
| Öğe | Node | PHP |
|---|---|---|
| İş alanları | 51 | 51 |
| Veritabanı tabloları | 142 | 142 |
| Sütunlar | 1311 | 1311 |
| Arayüz dilleri | 16 | 16 |
| Çeviri anahtarları | 2765 | 2792 |
| İsteğe bağlı modüller | 7 | 7 |
| Web kancası olayları | 8 | 8 |
| API kaynakları | 9 | 9 |
Şema aynı olduğu için bir veritabanı bir sürümden ötekine dönüştürme olmadan
geçer: birini durdurun, app.sqlite dosyasını ve dosya klasörlerini
kopyalayın, ötekini başlatın. Parolalar çalışmaya devam eder — iki sürüm de aynı özet
biçimini okur. Bu, var olan en dürüst eşitlik sınamasıdır ve geçilmiştir.
Ayrılan noktalar#
Birkaç adresin biçimi#
Node tarafında 531 yol, PHP tarafında 513. Aradaki fark bir eksik değildir: aynı işlevler daha derli toplu yazılmıştır.
-
API. Node dokuz kaynağını tek tek tanımlar
(
/api/v1/collaborateurs,/api/v1/services…); PHP ise tek bir parametreli yolla sunar. Dokuzu da yanıt verir, kök dokuzunu birden duyurur ve bir test bunu kanıtlamak için hepsini tek tek çağırır. - Kurulum. Node beş adımda yönlendirir, PHP tek sayfaya ve tek gönderime sığar. Aynı beş bilgi sorulur: dil, önkoşullar, şirket, yıllık izin günleri, yönetici hesabı.
-
Yatay yetkiler. Node'da her yetki için bir yol vardır, PHP'de tek bir
parametreli yol:
/admin/droits/{flag}.
Biçime ilişkin bu yirmi sekiz fark ezberden söylenmiyor: tests/test_parity.php
dosyası hepsini tek tek çalıştırıyor.
Dönemsel süpürme#
Node kendi zamanlayıcısını taşır: sunucu sürekli çalışır, kendi kendini uyandırır. PHP
yalnızca bir istek boyunca yaşar: aynı sekiz işlem, barındırmanın cron'u tarafından
çağrılan tools/cron.php üzerinden geçer. Aynı iş kodu, aynı sonuç, farklı
tetikleyici.
Tarihler#
Node tarihlerini V8'e gömülü Intl ile yazar. PHP de intl
eklentisi varsa aynısını yapar — aynı ICU motoru, harfi harfine aynı sonuç. Eklenti yoksa
gün ve ay adları çeviri sözlüklerinden gelir: tarih doğru ve çevrili kalır, ama
öğelerinin sırası birkaç dilde değişebilir.
Ayrılması beklenirken ayrılmayanlar#
| Konu | İki sürümde de |
|---|---|
| QR kodları (iki adımlı doğrulama) | PHP tarafında elle yazılmış kodlayıcı, Node tarafında kullanılan kitaplığa karşı on altı metin uzunluğunda bayt bayt doğrulandı. |
| Yedek arşivleri | İki tarafta da bağımlılıksız yazılan tar.gz, aynı içerik, aynı SHA-256 özetleri. |
| IMAP muhasebe kutusu | İki tarafta da ürünün içinde yazılmış IMAP istemcisi. |
| PDF, CSV, içe aktarma | Ürünün içinde yazıldı, çıktı dosyaları aynı. |
| Denetim günlüğü | Özetlerin zincirlenmesi aynı: değiştirilmiş bir satır zinciri kırar, iki tarafta da. |
| HTTP güvenlik ilkesi | Aynı başlıklar, tek kullanımlık değerli aynı CSP, vazgeçilmez JavaScript'in aynı yokluğu. |
Hangisini seçmeli#
| Durumunuz | Sürüm |
|---|---|
| Paylaşımlı barındırma, FTP erişimi, komut satırı yok | PHP — tam da bunun için yapıldı |
Kendi sunucunuz, systemd, bir yönetici | Node |
| İkisinden birini yönetmeyi zaten biliyorsunuz | Onu. Eşitlik, seçimi geri alınabilir kılar. |
| Aynı anda çok kişi | Node — sürekli tek bir süreç, veritabanı zaten açık |
| Kararsızsanız | PHP — bakılacak parça daha az, Node'a geçmek yine dosya kopyalamaktan ibaret |
Eşitlik nasıl korunuyor#
Bu bir niyet değil, bir doğrulama. Her değişiklikte dört karşılaştırma yapılır:
- Yollar — iki taraftan çıkarılıp karşılaştırılır; her sapma belgelenmiş bir fark olmak zorundadır.
- İşlevler — her modülün dışa verdiği adlar, modül modül karşılaştırılır.
- Şema — tablolar ve sütunlar iki veritabanından okunup karşılaştırılır.
- Ekranlar — iki sürüm yan yana başlatılır ve gerçek bir tarayıcıyla sayfa sayfa gezilir, yanıt kodu ile yapı karşılaştırılır.
Bu dört geçiş gerçek kusurlar buldu — ikisi her iki sürümü birden ilgilendiriyordu. Onları değerli kılan da bu: ölçmediğiniz bir eşitlik, farkına varmadan yitirdiğiniz bir eşitliktir.
Buna test takımları eklenir: Node tarafında 802, PHP tarafında 572, toplam 1374 durum.
Node sürümünü kurmak
Servis, ters vekil sunucu, TLS, yedekler, güncelleme.
PHP sürümünü kurmak
Paylaşımlı barındırma, izinler, cron, TLS.
Toutadmin belgeleri — 2026-09-13 tarihinde derlendi. Yazılımdan bağımsız, kendi başına bir site.