docs: update implementation plan for multi-PHP support

This commit is contained in:
Ümit Tunç
2026-03-28 07:34:41 +03:00
parent ea80822ee6
commit 166b45612d
+45
View File
@@ -80,3 +80,48 @@ multiphp/
2. **Güvenlik Testi**: Renderer içinden Node yeteneklerine erişilemediğinin teyidi.
3. **Performans**: Başlangıç süresi ve RAM kullanım ölçümleri.
4. **Temiz Kapanış**: Uygulama kapandığında tüm alt süreçlerin (Nginx, PHP, MySQL) sonlanması.
## Platformlar Arası (Cross-Platform) Yönetim Stratejisi
Uygulamanın Windows, macOS ve Linux üzerinde sorunsuz ve sürdürülebilir bir şekilde çalışması için "Platform Strategy Pattern" benimsenecektir.
### 1. Mimari Yaklaşım: Strategy Pattern
İşletim sistemine duyarlı işlemler (servis başlatma, hosts dosyası düzenleme vb.) için bir interface tanımlanacak ve her platform için ayrı sınıflar oluşturulacaktır.
```typescript
interface OSOperations {
restartService(name: string, config: any): Promise<void>;
editHostsFile(domain: string, ip: string): Promise<void>;
getElevatedPrivileges(): Promise<boolean>;
}
// WindowsOps, MacOSOps ve LinuxOps sınıfları bu arayüzü implemente eder.
```
### 2. Kritik Platform Farklılıkları ve Çözümler
#### **Yetki Yönetimi (Elevated Privileges)**
- **Windows**: `sudo-prompt` veya `runas` ile admin yetkisi istenir.
- **macOS/Linux**: `sudo` veya `polkit` kullanılır.
- **Strateji**: Uygulamanın tamamını admin yapmak yerine, sadece yetki gerektiren "servis başlatma" veya "hosts yazma" gibi atomik işlemler yetki yükseltilerek (elevated) tetiklenmelidir.
#### **Dosya Sistemi ve Yapılandırma**
- **Yollar**: Mutlaka `path.join()` kullanılacak. (Windows `\` vs Unix `/`).
- **Harf Duyarlılığı**: Linux/macOS'te `php.ini` ile `PHP.ini` farkı gözetilecek.
- **Satır Sonları**: Konfigürasyon dosyaları yazılırken Windows için `CRLF`, Unix için `LF` (`os.EOL`) kullanılacak.
#### **Servis Yönetimi (Process Managers)**
- **Windows**: `.exe` spawn veya Windows Service (`sc.exe`/`winsw`).
- **macOS**: `launchd` (`.plist` dosyaları).
- **Linux**: `systemd` (`systemctl`).
- **Hosts Dosyası**: Windows (`C:\Windows\System32\drivers\etc\hosts`) vs Unix (`/etc/hosts`).
#### **Paketleme ve Güvenlik (Code Signing)**
- **Windows**: Blue Screen (SmartScreen) uyarısını engellemek için **EV Code Signing Certificate**.
- **macOS**: "Uygulama hasarlı" hatasını engellemek için **Apple Notarization** (Xcode & Apple Developer ID).
- **Linux**: `.deb`, `.rpm` ve **AppImage** formatlarında dağıtım.
#### **Terminal ve Log Akışı**
- `node-pty` kütüphanesi kullanılarak her platformda yerel terminal emülasyonu sağlanacak (Windows için `conpty` desteği).
### 3. Geliştirme Sıralaması
**Öneri**: Geliştirmeye **Windows** platformu üzerinde başlanması (en yaygın kullanım senaryosu olduğu için), ancak `OSOperations` yapısının ilk günden kurulmasıyla macOS ve Linux desteğinin eklenti/modül olarak kolayca dahil edilmesi hedeflenmektedir.