lostyazilim
tr.link

PHP Sıralama Konusunda Yardım

7 Mesajlar 1.316 Okunma
lstbozum
tr.link

brown brown WM Aracı Kullanıcı
  • Üyelik 28.10.2013
  • Yaş/Cinsiyet 25 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad H** E**
  • Mesajlar 1748
  • Beğeniler 385 / 385
  • Ticaret 27, (%96)
Öncelikle herkese merhabalar,

Elimde bir .txt dosyasının içerisinde 8 farklı sütun şeklinde 577 satırlık bir veri mevcut. Sütunlardan biri isim bir diğeri ise soyisim sütunu. Yapmam gereken şey satırları soyada göre, eğer soyadlar aynıysa isimlere göre sıralamak. Dosyayı satır satır ayırıp, her satırı da sütunlara bölüp array dizisi haline getirebiliyorum. Bu kısmı zaten pek sorun değil ancak soyada göre sıralayamıyorum. Yazdığım kod şu şekilde;

$students = file("261.txt");

for($i = 0; $i<577; $i++) {
$student[$i] = explode ("/t",$students[$i]);
}


Burada $student[x][3] şeklinde soyada ulaşabiliyorum. x hangi öğrenci olduğunu belirtiyor.
 

 

wmaraci
reklam

0ktay 0ktay strdex Kullanıcı
  • Üyelik 01.02.2018
  • Yaş/Cinsiyet 26 / E
  • Meslek Yazılım öğrencisi
  • Konum Antalya
  • Ad Soyad O** Ş**
  • Mesajlar 603
  • Beğeniler 25 / 155
  • Ticaret 2, (%100)
Dostum anladığım kadarı ile cevaplayacağım sen array içerisinde bir değeri bulmaya çalışıyorsun diye yorumladım kendi kafamda umarım doğru yorumlamışımdır. :)

Aşşağıdaki örnekte sana arrayın içinde aradığın şey var ise true yok ise false döndürecektir.

$arrayci = array("oktay","ahmet","mehmet");

$isimne = in_array("oktay",$arrayci);

echo $isimne;
 

 

Eğitimin pahalı olduğunu düşünüyorsanız, cehaletin bedelini hesaplayın.

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
Hocam buna gerek yok.
SQL zaten size bunu sağlıyor. Sorgunuzu şu şekilde yaparsanız istediğinizi yapmış olacaksınız
SELECT * FROM Students ORDER BY Soyad ASC, Ad ASC;
Daha sonra sıralama vb. uğraşmadan elinize gelmiş olacak sonuçlar. Daha sonra PHP tarafında hiç işlem yapmadan verileri sıralı halde kullanabileceksiniz.
 

 

0ktay 0ktay strdex Kullanıcı
  • Üyelik 01.02.2018
  • Yaş/Cinsiyet 26 / E
  • Meslek Yazılım öğrencisi
  • Konum Antalya
  • Ad Soyad O** Ş**
  • Mesajlar 603
  • Beğeniler 25 / 155
  • Ticaret 2, (%100)
AhmetKarabulut Dostum sitenin hitine bağlı kullanım alanı değişiklik gösterebilir.

Yoğun bir hite sahipse sürekli sorgulama vt'nı şişirebilir ve kullanımı kısıtlayabilir.
 

 

Eğitimin pahalı olduğunu düşünüyorsanız, cehaletin bedelini hesaplayın.
wmaraci
wmaraci

AhmetKarabulut AhmetKarabulut WM Aracı Kullanıcı
  • Üyelik 11.09.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Bilgisayar Mühendisi
  • Konum İzmir
  • Ad Soyad A** K**
  • Mesajlar 1077
  • Beğeniler 361 / 361
  • Ticaret 33, (%100)
Hocam üstteki kodda veritabanına bir girdi yapılmıyor, o yüzden kod veri tabanını şişirmeyecektir. Zaten şayet her girişte veritabnaından bilgi çekiliyorsa, benim verdiğim kod ile düz sqlden çekmek arasında neredeyse çok az fark olacaktır. Üstüne server-side'da gelen bilgiyle işlem yapmak ekstra iş yükü bindirir sunucuya. Tüpraş için yaptığımız yazılımlarda 100+ milyon veri arasından sorgular yapıyor bir çok kullanıcı günlük olarak ve inanın bana bu şekilde olması çok daha hızlı ve iyi çalışmasını sağlıyor. Tabii ki performans çok kritikse özel methodlar geliştirilmesi gerekebilir.

https://www.quora.com/With-more-than-8-million-accounts-how-do-giant-sites-like-Reddit-verify-so-quickly-that-a-username-isnt-taken

İncelemeniz için konuyu bırakıyorum yol gösterecektir.
brown

kişi bu mesajı beğendi.

0ktay 0ktay strdex Kullanıcı
  • Üyelik 01.02.2018
  • Yaş/Cinsiyet 26 / E
  • Meslek Yazılım öğrencisi
  • Konum Antalya
  • Ad Soyad O** Ş**
  • Mesajlar 603
  • Beğeniler 25 / 155
  • Ticaret 2, (%100)
AhmetKarabulut

Dostum veri tabanında yapılan bir sorgulamanın vt'yi şişirmediğini ilk defa senden duydum. (veritabanı şişmelerinin çoğu fazla tablo ve sorgulamadan olur.(şişme: yavaşlama, ağırlaşma))

Veritabanının ram ve cpu'yu kullandığını biliyorsundur heralde. Bu yüzden host firmaları Cpu miktarını açtıkları konularda belirtmeye başladı 5 yıl öncesine gidersen kimse cpu limitini size ek bilgi olarak sunmuyordu.
Mysql ve php kullanımı arttıkça kimse istediği host'u bulamadığı için host firmaları belirtme gereği duydu.

Ayrıca mysql size txt'nin sunduğu hizmetleri sunamaz ve txt size mysql'in sunduklarını sunamaz.

Sana tavsiyem googleye "mysql şişmeleri" yazarak çıkan sonuçlardan 5-6 tanesini gezmelisin sorunları görebilirsin.

brown Dostum benim web sitemde yoğun hit var ve senin yaptığın veya istediğin mantıkta çalışan bir panelim var "php dosya işlemleri" ile .txt, .cfg gibi 1.3Milyon dosyadan yaklaşık günlük 750 kişiye veri alışverişi yaptırıyorum.
Benim görüşüm php dosya işlemleri senin işini görecektir..

Tabi cache kullanırsan arkadaşın dediğide kötü bir yol değil.

http://www.tonylea.com/2012/how-to-get-memory-and-cpu-usage-in-php/

Yukarıdaki linkte cpu ve memory limitini gösterebileceğiniz bir fonksiyon bulunmakta.
Fonksiyonu kullanarak test edebilirsiniz.

iyi çalışmalar.
brown

kişi bu mesajı beğendi.

Eğitimin pahalı olduğunu düşünüyorsanız, cehaletin bedelini hesaplayın.

brown brown WM Aracı Kullanıcı
  • Üyelik 28.10.2013
  • Yaş/Cinsiyet 25 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad H** E**
  • Mesajlar 1748
  • Beğeniler 385 / 385
  • Ticaret 27, (%96)

AhmetKarabulut adlı üyeden alıntı

Hocam üstteki kodda veritabanına bir girdi yapılmıyor, o yüzden kod veri tabanını şişirmeyecektir. Zaten şayet her girişte veritabnaından bilgi çekiliyorsa, benim verdiğim kod ile düz sqlden çekmek arasında neredeyse çok az fark olacaktır. Üstüne server-side'da gelen bilgiyle işlem yapmak ekstra iş yükü bindirir sunucuya. Tüpraş için yaptığımız yazılımlarda 100+ milyon veri arasından sorgular yapıyor bir çok kullanıcı günlük olarak ve inanın bana bu şekilde olması çok daha hızlı ve iyi çalışmasını sağlıyor. Tabii ki performans çok kritikse özel methodlar geliştirilmesi gerekebilir.

https://www.quora.com/With-more-than-8-million-accounts-how-do-giant-sites-like-Reddit-verify-so-quickly-that-a-username-isnt-taken

İncelemeniz için konuyu bırakıyorum yol gösterecektir.


Hocam veritabanı kullanmıyordum, bir .txt dosyası içinde alıyordum verileri. Veritabanı olsa iş kolay :)

Arkadaşlar hallettim ilginiz için çok teşekkürler, istediğim biraz yanlış anlaşılmış ama canınız sağolsun.
0ktay

kişi bu mesajı beğendi.

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al