Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Merhabalar

Eski bir Php projesini, sadece versiyon yükselterek güncellemek istiyoruz. Geçiş işlemlerinde, sorunsuz geçebilmek adına hangi adımları izlememiz gerekiyor.
NOT: Direk Laravel'e geçip, projeyi sıfırdan yazabilecek bir ekibimiz ve zamanımız olmadığı için var olanı en hızlı şekilde geçirmemiz gerekiyor.

Sistemimiz aşağıdaki özelliklere sahip.

  1. MySQL versiyonu 4x Php versiyonu 4x
  2. Php içinde MySQL'e bağlantı için mysql kullanılmış. (mysql_query("sorgu") şeklinde)
  3. Html kodlaması ISO8859-9
  4. Her program ayrı sayfa olarak yazılmış. Sorgulama ve görüntülemeler aynı sayfada bulunuyor.
  5. Veri tabanımızınız karakter kodlaması Latin 1.
  6. Tablolar içinde ki tarih alanlarında varsayılan değer olarak '0000-00-00' eklenmiş.
  7. Yedek dosyalar ile beraber ortalama 1550 tablo bulunuyor.
  8. En büyük tablomuz da ortalama 1050000 kayıt bulunuyor.

Geçiş yaparken en hızlı ve en kolay geçiş yöntemini arıyoruz.
1- Veri tabanını 4x den 8x'e aktarırken aşağıdaki komut ile aktarabiliyoruz. Daha kolay yöntemi var mı?
ALTER TABLE $tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
2- Aktarılsa bile veri tabanındaki varsayılan değerler sorun oluyor. Bunu my.ini içine aşağıdaki komutu ekleyerek çözebiliyoruz. Bu bir güvenlik açığı oluşturur mu? Veya nasıl bir yöntem kullanabilir.
sql_mode="NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
3- mysql yerine mysqli_* kullanırsak mı daha hızlı olur, PDO mu?

  • mysql de direk mysql_query("Sorgu") yapılırken, mysqli de mysqli_query($con,"Sorgu") yaparak, her query işleminde bağlantıyı göndermek gerekiyor. Burada PDO veya MySQLi de direk bağlantıyı yollamadan kullanmanın yolu var mı?
    4- Html kodlamasını her programı açıp, utf8 yapmak yerine toplu olarak tüm programdaki kodlarda otomatik olarak yapabileceğim bir yöntem var mı?
    5-Geçiş işleminde PHP ve MySQL tarafından dikkat etmemiz gereken durumlar nelerdir.

Kendi içimizde araştırma yaptık. Bazı yöntemler bulduk fakat sizlerin de deneyimlerinizden, önerilerinizden yararlanmak istiyoruz. Bu konuda desteklerinizi bekliyoruz.

Benzer bir senaryoyla ben de karşılaşmıştım zamanında.

https://gist.github.com/sineld/3961e06a08166105754ff553c078d93a
buradaki gist ile mysql'in artık kullanılmayan fonksiyonlarını varmış gibi kullanabilirsiniz, PDO ile uygulamayı yeniden yazmak kadar zaman harcamanız gerekecektir.. sql_mode ilavesinin herhangi bir güvenlik açığına vs. bebebiye verdiğine şahsen denk gelmedim. Zaten uygulamayı idare edecek kadar bu yeni yerinde çalıştırdıktan sonra yeni bir framework ile yeniden yazacağınızdan yumuşak bir geçiş tercih edebilirsiniz.

Latin'den utf8'e dönüştürürken verilerin de dönüştürülmesi gerekebilir. Senaryoyu doğrudan canlı sunucuda gerçekleştirmelktense geçici bir container üzerinde test ettikten sonra aktarmanızı öneririm.

    sineld
    Yorum için teşekkür ederim. İlgili mysql.php çok işimi görecek. Belirttiğiniz gibi şuan ki işlem bizi kurtarsın, yenisini laravel ile yazma olayına yavaş yavaş geçiş yapacağız.

    Şöyle bir deneme yaptım. Veri tabanını hiç convert etmeden Latin 1 olarak MySQL 8x e geçirdim. Aynı şekilde Html kodlarını da UTF-8 yapmadım. Sadece php.ini için de default_charset="ISO-8859-9" olarak kullandım. Buraya kadar sorun yok.(Şimdilik öyle görünüyor)

    Php 4x de $personel[adi] olarak kullanımları, Php 8x de $personel['adi'] olarak kullanmamızı istiyor. Yani değer ismini tırnak içine almamız gerekiyor. Get ve post değerlerinde de aynı durum var. Bunu aşmanın bir yöntemi var mı?