MySQL R40+ Kullanım Şekilleri/neler değişti?
MySQL R40 değişikliklerini SA-MP forumundaki yazıyı anladığım kadarıyla anlatmaya çalışacağım. Bu değişiklikler sadece R33+ uyumlu ve R40'da değişmiş kodlar için geçerlidir.
Birçok kod değişmiş, Bütün kodlar her zaman doğru, performanslı ve stabil çalışmayacağından bu kodları yenisine çevirmelisiniz. Orjinal konuda RegEx için kolay değiştirme kodları verilmiş, sanırım Notepad++ programı kullanarak yapılabiliyor, ancak ben bunu bilmediğimden bu konuya eklemiyorum.
● Bağlantı tanımlamalarında kullanılacak yeni "MySQL" etiketi. Bu etiketi kullanmanız gerekiyor.R39 ve altındanew g_SQL;
public OnGameModeInit()
{
g_SQL = mysql_connect(/* ... */);
}
R40+new MySQL:g_SQL;
public OnGameModeInit()
{
g_SQL = mysql_connect(/* ... */);
}
● Log level tanımlamalarındaki gereksiz ön ek kaldırıldı. "LOG_"R39 ve altındamysql_log(LOG_ERROR | LOG_DEBUG);
R40+mysql_log(ERROR | DEBUG);
Sadece LOG_ kısmını silmeniz yeterli.
● mysql_escape_string, mysql_stat ve mysql_get_charset fonksiyonlarındaki Bağlantı parametresi en sondaki pozisyona taşındıR39 ve altındamysql_get_charset(destination, g_SQL, sizeof(destination));
R40+mysql_get_charset(destination, sizeof(destination), g_SQL);
● mysql_connect fonksiyonundaki şifre ve veritabanı parametrelerinin yerleri değiştirildi.R39 ve altındamysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, MYSQL_PASSWORD);
R40+mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
● mysql_connect fonksiyonundaki tüm bağlantı seçenekleri, kendisi için kodlanmış olan sistemden ayarlanacak.R39 ve altındamysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, .autoreconnect = false, .pool_size = 0);
R40+new MySQLOpt:options = mysql_init_options();
mysql_set_option(options, AUTO_RECONNECT, false);
mysql_set_option(options, POOL_SIZE, 0);
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, options);
● mysql_option, mysql_global_options olarak yeniden adlandırıldı.R39 ve altındamysql_option(DUPLICATE_CONNECTIONS, true);
R40+mysql_global_options(DUPLICATE_CONNECTIONS, true);
● mysql_log'un içindeki log type parametresi kaldırıldı.R39 ve altındamysql_log(ALL, LOG_TYPE_HTML);
R40+mysql_log(ALL);
● mysql_reconnect kaldırıldı.R39 ve altındamysql_reconnect(g_SQL);
R40+mysql_close(g_SQL);
g_SQL = mysql_connect(/* ... */);
Sadece mysql bağlantısını kapatıp tekrar bağlanıyorsunuz.
● mysql_current_handle kullanımı tamamen kaldırıldı. Yeni kullanımı yok.
● Bağlantı parametresi tüm cache fonksiyonlarında kaldırıldı.R39 ve altındacache_get_row(0, 0, g_SQL);
R40+cache_get_row(0, 0);
● cache_get_row, cache_get_value_index olarak yeniden adlandırıldı.R39 ve altındacache_get_row(0, 0, dest);
new value = cache_get_row_int(0, 1);
R40+cache_get_value_index(0, 0, dest);
new value = cache_get_value_index_int(0, 1);
Sadece bulup değiştirmeniz yeterlidir.
● cache_get_field_content, cache_get_value_name olarak yeniden adlandırıldı. String/Integer/Float değerler için değişiklikler/eklemeler yapıldı.R39 ve altındanew dest[128];
cache_get_field_content(0, "string", dest);
new value = cache_get_field_content_int(0, "integer");
new Float:value = cache_get_field_content_float(0, "float");
R40+new dest[128];
cache_get_value_name(0, "string", dest);
new value = cache_get_value_name_int(0, "integer");
new Float:value;
cache_get_field_content_float(0, "float", value);
Sadece bulup değiştirmeniz yeterlidir.
● Tüm cache_get fonksiyonları artık değerleri döndürmüyor, yazdığınız parametreye tanımlıyor.R39 ve altındanew bool:value = cache_get_value_index_bool(0, 2);
new row_count = cache_get_row_count();
R40+new bool:value;
cache_get_value_index_bool(0, 2, value);
new row_count;
cache_get_row_count(row_count);
● "cache_set_active(Cache:0);" kullanımı artık aktif cache'yi tanımsız yapamıyor.R39 ve altındacache_set_active(Cache:0);
R40+cache_unset_active();
● cache_get_data fonksiyonu kaldırıldı. (`cache_get_*_count` şeklinde kullanın):R39 ve altındanew rows, fields;
cache_get_data(rows, fields);
R40+new rows, fields;
cache_get_row_count(rows);
cache_get_field_count(fields);
● orm_delete'deki clearvars bool parametresi kaldırıldı.R39 ve altındaorm_delete(orm_id, true);
R40+orm_delete(orm_id);
orm_clear_vars(orm_id);
● NULL Fonksiyonu ekledi.new bool:is_null;
cache_is_value_name_null(3, "date", is_null);
printf("The value in the fourth row and in the column 'date' %s 'NULL'.", is_null ? "is" : "is not");
● Index ile veri çekebileceğiniz fonksiyonlar eklendi. Artık Verilerinizi index'e göre de çekebilirsiniz.cache_get_value_index
cache_get_value_index_int
cache_get_value_index_float
cache_is_value_index_null
● Connection handle gereksiz fonksiyonlardan kaldırıldı. Kullanılan yerleri görmek için buraya tıklayın (http://wiki.sa-mp.com/wiki/MySQL/R40).
Anlatım SA-MP forumundan alıntıdır. Türkçe anlatım bana aittir. Orjinal Konu için tıklayın (https://forum.sa-mp.com/showthread.php?p=3761067). SA-MP R40 hakkında wiki sayfası için tıklayın (http://wiki.sa-mp.com/wiki/MySQL/R40). Anlatımdaki yanlışlarımı yorumdan gönderirseniz sevinirim, düzeltmeye çalışacağım.Saygılarımla, Kraus
Türkçene sağlık. Yazan ellerinede sağlık.
Ellerine sağlık
Bir sunucuyu R40+ sürümüne yükseltirsek ne olur yani ne değişir?
Alıntı yapılan: FeelsBadMan - 19 Eylül 2017, 17:09:05
Bir sunucuyu R40+ sürümüne yükseltirsek ne olur yani ne değişir?
Daha stabil olur daha performanslı olur
Alıntı yapılan: FeelsBadMan - 19 Eylül 2017, 17:09:05
Bir sunucuyu R40+ sürümüne yükseltirsek ne olur yani ne değişir?
R33 üstü kullanıyorsan çok bir şey değişmez ama daha düşük sürüm kullanıyorsan olağanüstü bir hızlanma/performans artışı oluyor.
Ortada gerçek bir emek var. Konu için teşekkürler :helal:
Teşekkür ederim,aklımdaki bazı soruların cevabını aldım.
teşekkürler, yardımcı oldu (=
Teşekkürler :helal: Ellerine Sağlık
Modumu R39 dan 40a gecirmek mantikli mi acaba?
Alıntı yapılan: FeelsBadMan - 24 Kasım 2017, 23:57:58
Modumu R39 dan 40a gecirmek mantikli mi acaba?
R41 çıktı. Geçmek için gecikmişsin bile.
Alıntı yapılan: Backup - 25 Kasım 2017, 00:30:16
Alıntı yapılan: FeelsBadMan - 24 Kasım 2017, 23:57:58
Modumu R39 dan 40a gecirmek mantikli mi acaba?
R41 çıktı. Geçmek için gecikmişsin bile.
Peki gecmek mantiklimi bi faydasi olurmu?
Alıntı yapılan: FeelsBadMan - 25 Kasım 2017, 08:28:57
Alıntı yapılan: Backup - 25 Kasım 2017, 00:30:16
Alıntı yapılan: FeelsBadMan - 24 Kasım 2017, 23:57:58
Modumu R39 dan 40a gecirmek mantikli mi acaba?
R41 çıktı. Geçmek için gecikmişsin bile.
Peki gecmek mantiklimi bi faydasi olurmu?
Hız konusunda daha iyi bir performans alırsın.
Alıntı yapılan: FeelsBadMan - 25 Kasım 2017, 08:28:57
Alıntı yapılan: Backup - 25 Kasım 2017, 00:30:16
Alıntı yapılan: FeelsBadMan - 24 Kasım 2017, 23:57:58
Modumu R39 dan 40a gecirmek mantikli mi acaba?
R41 çıktı. Geçmek için gecikmişsin bile.
Peki gecmek mantiklimi bi faydasi olurmu?
Tabii ki mantıklı , güncel kullanmak her zaman iyidir.
GtaTurk'de bana faydası dokunmuştu bu konunun. Buradada konuyu bizimle paylaştığın için teşekkürler.
Yararlı.
Yorumlar için teşekkürler.
Anlatım için teşekkürler.
Teşekkürler.