| Duyurular IRCdForum.Net yönetimince gerçekleştirilen duyuruları takip edebileceğiniz alan. |
|
|
Konu Araçları |
| 20 Eylül 2026, 21:03 | |
|
Dile kolay 5 aydır uğraştığım, zaman zaman burada da bahsettiğim, yine zaman zaman yazılımcı ve webmaster arkadaşlarımla yaptığımız sohbetlerde de sıklıkla gerekliliğine dem vurduğum, üzerinde çalıştığımı belirttiğim; IRCdForum.Net altyapı modernizasyonunun en büyük aşamasını bugün itibarıyla tamamlamış bulunuyorum.
Öncelikle konu teknik bir yazı olacağından biraz uzun olacak, dolayısıyla bu konulara ilgi duymayan kullanıcılarımız için kısaca geçeyim; yapılan çalışmalar altyapıyla ilgili olup, görünüşte size değişen herhangi bir görsel farklılık deneyimletmeyecek. Performans, hız, stabil çalışma ve günümüz teknolojilerine uygun hale getirme olarak özetleyebilirim yapılanları. Bunun özellikle IRC forum siteleri içerisinde bir ilk olduğunu, günümüzdeki vBulletin 3.8 kullanan R10 hariç neredeyse bütün forumların (en azından %90'ının) PHP 5.6 altında çalıştığını rahatlıkla söyleyebilirim. PHP 8.x'lere çıktığını iddia edenler varsa da onlar aşağıda da açıklayacağım üzere hata ve uyarıları susturarak işi çözüyorlar, yani çözdüğünü sanıyorlar, bu yanlış; bununla uyumluluk çalışması olmaz. Başlamadan yine önemle vurgulamak istiyorum ki; bu konuyu birçok webmaster ve kod editörü okuyup, takip edecek, heves edecektir. Dilerseniz AI ile bu geçişi deneyebilirsiniz ama yazılım/kodlama bilginiz yoksa bence boşa denemeyin, aklınız ermez.. Yani AI böyle bir şeyi tek başına yapamaz. --- Devam edelim... IRCdForum.Net artık;
Özetle dışarıdan baktığınızda hâlâ bildiğiniz vBulletin 3.8.11'i kullanıyoruz. Ancak o vBulletin'in altında çalışan teknik katman artık 2000'li ve 2010'lu yılların PHP/MySQL şartlarına bağımlı değil. Kullandığımız yazılımın tarihçesi vBulletin 3.8, oldukça eski bir yazılım. vBulletin 3.8 serisi 2012 yılında end of life olarak sınıflandırıldı. Bunun anlamı; normal bugfix ve yeni özellik geliştirmesinin sona ermesi ve ürünün legacy statüsüne geçmesiydi. Ancak 3.8 serisinin hayatı teknik olarak o gün tamamen sona ermedi. Aradan yaklaşık beş yıl geçtikten sonra, özellikle dönemin yeni PHP sürümleriyle uyumluluk gibi bakım ihtiyaçları nedeniyle vBulletin 3.8.11, 10 Mayıs (doğum günüm) 2017'de 3.8 serisinin son/final sürümü olarak yayımlandı. EOL tarihi: 2012 Son 3.8.x sürümü: 3.8.11 / 2017 PHP tarafında da durum çok farklı değil. PHP 5.6'nın resmî desteği 31 Aralık 2018'de, PHP 7.1'in resmî desteği ise 1 Aralık 2019'da sona erdi. Daha önce IRCdForum.Net'i PHP 5.x döneminden PHP 7.1'e uyarlamıştım. vBulletin 3.8.11, varsayılan olarak PHP 7.1 uyumlu olsa da başta vBSEO olmak üzere ek bileşenlerin çoğu uyumsuzdu. Bu geçiş önemliydi ama hiçbir zaman nihai hedef değildi. Bugün ise bu forum, bu duyuruyu hazırladığım tarih itibarıyla PHP'nin en son sürümü olan ve halihazırda desteği de sürmekte olan PHP 8.5.10 üzerinde çalışıyor. PHP 8.5 dalının aktif desteği 31 Aralık 2027'ye, güvenlik desteği ise 31 Aralık 2029'a kadar devam edecek. Yani bu defa yalnızca eski ama biraz daha yeni bir PHP sürümüne yükseltmedik, güncel ve resmî olarak desteklenen en yeni PHP sürümüne geçmiş olduk. Yukarıda da belirttiğim gibi forumun çalışma ortamı yalnızca vBulletin'in fiziksel PHP dosyalarından oluşmuyor. IRCdForum.Net'te;
birlikte çalışıyor. Bunlardan herhangi birinin PHP 8 ile uyumsuz olması forumun bazı bölümlerinin tamamen çökmesi veya daha kötüsü, yalnızca belirli bir işlem yapılınca ortaya çıkan sessiz hatalar üretmesi için yeterli. Bu nedenle çalışmanın alabildiğine kusursuz, eksiksiz ve tam teşekküllü tamamlanması gerekiyordu. Sürecin aylarca uğraşımın sonucunda tamamlanması da bu yüzdendi. Rakamlarla Çalışmanın Kapsamı; Final PHP 8 dağıtım seti canlı hotfix'lerle birlikte yaklaşık 240 uygulama dosyasından oluşuyor. Bu dosyaların toplam kod hacmi yaklaşık 214 bin satır. Temiz vBulletin 3.8.11 dosyaları, orijinal vBSEO 3.6 kaynakları ve veritabanındaki plugin kodlarıyla yapılabilen referans karşılaştırmalarında en az yaklaşık 6.900 satırlık kod ekleme/silme/revizyon farkı bulunuyor. Burada özellikle "en az" diyorum. Çünkü yıllar içerisinde IRCdForum.Net'e özel yazılmış veya üzerinde önceden değişiklik yapılmış bazı fiziksel custom dosyaların birebir temiz referansı bulunmadığından onları bu satır hesabına dahil etmek sağlıklı olmazdı. DB tarafındaki migration ise ayrıca;
kontrollü şekilde yönetti. Yalnızca veritabanında saklanan 74 plugin kodunda dahi yaklaşık 400 satırlık satır bazlı kod farkı bulunuyor. Dolayısıyla burada yapılan iş, birkaç dosyaya birkaç isset() eklemek değil. PHP 5/7 döneminde çalışan ancak PHP 8'de kaldırılmış veya davranışı değişmiş;
tek tek ele alındı, baştan kodlandı. Burada temel prensibim başından beri şuydu; hatayı susturmak değil, hatanın kaynağını düzeltmek. "@" koyup warning'i saklamak, error_reporting düşürmek veya sorun çıkaran özelliği sessizce devre dışı bırakmak tembelliğe kaçmak ve baştan savma iş yapmak olurdu; bir iş yapılacaksa ya tam yaparım, ya da hiç yapmam. Prensibim, çalışma felsefem her zaman budur. Bu arada, kodlama işinin kendisi çalışmanın yalnızca bir kısmıydı. Asıl uzun süren bölüm test ve regresyon süreci oldu. Sistem; * misafir, * normal üye, * moderatör, * yönetici rolleriyle ayrı ayrı test edildi. Bir noktada ilk normal üye taramasında 15.633 uyarı görüldü. İlk genel taramalarda ise PHP 8 altında forum önü tarafında yaklaşık 18.979, AdminCP tarafında 746 bini aşan warning/notice olayı üretilebiliyordu. Çalışmanın sonunda kabul edilen PHP 8.5 testlerinde hedef; 0 fatal / 0 warning seviyesine getirildi. Üstelik yalnız PHP 8.5 değil; aynı son kodun gerektiğinde geri dönüş amacıyla PHP 7.1 altında da çalışması ayrıca kontrol edildi. vBSEO tarafı başlı başına ayrı bir proje vBSEO'nun geliştirilmesi 2013 yılında sona ermişti. Dolayısıyla en sancılı konulardan birisi ve ta kendisiydi. Elimizde yaklaşık 15 yıllık bir kod tabanı var. Temiz vBSEO 3.6.0 dosyalarıyla bugün IRCdForum.Net'te kullandığımız uyarlanmış vBSEO kaynaklarını karşılaştırdığımda, yalnız fiziksel vBSEO dosyalarında 2.200 satırın üzerinde diff oluşmuş durumda. Bunun içerisinde geçmiş PHP 7 uyarlamalarım da var, son PHP 8 revizyonları da. Burada önemli kriterlerden biri şuydu; PHP/charset değişirken aylardır Google tarafından indekslenmiş URL yapısı değişmeyecek. UTF-8 geçişinde ilk denemede Türkçe başlıkların slug'larının değişebildiği tespit edildi. Örneğin eski sistemde oluşan bir URL'nin UTF-8 sonrasında farklılaşması SEO açısından kabul edilebilir değildi. Bu nedenle vBSEO'nun tek baytlık karakter dönüşüm davranışı ayrıca uyarlanarak eski ve yeni sistemde üretilen URL'ler karşılaştırıldı ve aynı tutuldu. Sonra sıra veritabanının 2000'li yıllardan kalan karakter setine geldi Kodları PHP 8.5'e taşımakla işin yalnızca PHP tarafını modernize etmiş oluyorduk. Veritabanımız tarihsel nedenlerle latin1 tanımlıydı. Ancak gerçekte Türkçe içerik Windows-1254 byte düzeniyle tutuluyordu. Bu, eski Türkçe vBulletin kurulumlarında yabancı olunan bir yapı değil. Yıllardır çalışıyor olması doğru ve modern olduğu anlamına gelmiyor. Dolayısıyla ikinci büyük aşamada forum veritabanı gerçek UTF-8 / utf8mb4 altyapısına taşındı. Ancak burada; Kod:
ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4; Çünkü MySQL sütunu latin1 sanıyor olabilir ama içindeki byte'ın gerçekte Windows-1254 anlamı taşıması mümkündür. Kör conversion yaparsanız ayların Türkçe mesajlarını "ü, ÅŸ, ÄŸ" çöplüğüne dönüştürmeniz işten bile değildir. Üstelik PHP serialized verilerinde bulunan; Kod:
s:10:"..."; Bir Windows-1254 Türkçe karakter UTF-8'de iki byte'a çıktığında serialization uzunluklarını doğru hesaplamazsanız veri artık `unserialize()` edilemez. Bu nedenle dönüşüm için ayrıca journal'lı, durdurulup devam ettirilebilen ve rollback yapabilen özel bir migration aracı geliştirdim.
Yani forumun aylardır birikmiş Türkçe içeriği gerçek UTF-8'e geçirilirken tespit edilen veri kaybı olmadı. MyISAM'a da veda ettik Aynı çalışma kapsamında forumun eski nesil MyISAM yapısı InnoDB'ye taşındı. Bugün onaylı 172 uygulama tablosunun tamamı InnoDB üzerinde çalışıyor. Bunun getirdiği en önemli kazanımlar; * tablo seviyesinde kilit yerine satır seviyesinde kilitleme, * crash recovery, * transaction altyapısı, * modern MariaDB/MySQL dünyasıyla daha doğal uyumluluk olarak özetlenebilir. --- Bugünkü Teknik Tablo;
--- Sonuç olarak; 2000'li yılların teknolojileri için yazılmış, 2012'de EOL statüsüne alınmış ve son bakım sürümü 2017'de yayımlanmış bir forum yazılımını, vBulletin 3.8 efsanesini, R10'dan sonra Türkiye'de ikinci, IRC forum siteleri bağlamında Türkiye'de ilk olarak 2026 yılının en güncel PHP ortamında çalıştırıyor olmanın haklı gururu ve mutluluğu içerisindeyiz. Özellikle yazılımcı, webmaster ve kod editörü arkadaşlar konuyu okuduklarında çalışmanın ehemmiyetini, ciddiyetini ve önemini illa ki fark edip yorum yapacaktır. --- Bundan sonraki süreçte canlı hata kayıtlarını ve sistem davranışlarını takip etmeye devam edeceğim. Gözden kaçan; * hata sayfası, * boş ekran, * bozuk Türkçe karakter, * farklı çalışan bir özellik, * arama problemi, * bozuk URL, * mesaj/PM gönderim problemi, * attachment/avatar sorunu, * beklenmeyen bir hata mesajı görürseniz mümkünse bulunduğunuz sayfanın bağlantısı ve ekran görüntüsüyle birlikte tarafıma iletmenizi rica ederim. Dün akşam @eLfida ilk hatayı bildirdi, düzelttim. Bugün @Ela da bir hata bildirmişti, onu da düzelttim. Akşam saatlerinde alıntılarla ilgili bir hatayı da kendim tespit ettim; onu da çözdüm. Böylesine devasa bir yazılımın neredeyse dokunulmadık yerini bırakmadığımız bu çalışma kapsamında illa ki gözden kaçırdığımız şeyler olabilir, hepsi fark edildikçe ve bildirildikçe tek tek düzeltilecektir. Kökü bizde. ![]() --- Önemli Not Bu piyasada vBulletin development adına yaptıklarım herkesin malumu. Ancak böylesine meşakkatli, neredeyse sıfırdan bir CMS yazmışçasına detaylı bir çalışmayı hatır gönül için başka platformlar üzerinde gerçekleştirmem lütfen beklenmesin; bu konuda arkadaşlarım, dostlarım gönül koymasın. İlerleyen günlerde yalnızca teknik sorumlusu ve yazılım geliştiricisi olduğum, biri @Dea Dia'ya, diğeri @Beatrice'e ait olan iki global platforma bu çalışma yapılacaktır. Onun dışında uzun vadede ancak ve ancak ücretli hizmet olarak sunulabilir. Kaldı ki; halihazırda globalde bu hizmeti yalnızca bir Rus sitesi veriyor, Türkiye'de ise bu işi yapan kimse yok. İleride bununla ilgili kapsamlı bir ilan oluşturabilirim. Çalışmamın tüm aşamalarında gerek fikir, gerek destek, gerek anlık sohbet olarak yükümü hafifleten ve katkısını yadsıyamayacağım dostum, kardeşim @Cry'a teşekkür ederim. Benzer Konular:
__________________
![]() |
|
| Yer İmleri |
| Şu anda bu konuyu görüntüleyen etkin kullanıcılar: 1 (0 üye ve 1 konuk) | |
|
|