Webmaster Forumu

Geri git   Webmaster Forumu > Webmaster Kaynak Eğitim Tanıtım Hizmet > İnternet Programlama ve Kodlama > PHP

PHP PHP & PHP Hızlandırıcılar

Cevapla
 
LinkBack Seçenekler Stil
  #1 (permalink)   iTrader 
Alt 2006-07-10, 12:19
Rütbe
 
Üyelik tarihi: Jul 2005
Nerden: about:blank
Mesajlar: 1.007
Tecrübe Puanı: 4
iTrader: %100/2
*siber* is on a distinguished road
Unhappy Server'ı çok kasıyor.

Yaklaşık 5 bine yakın üyeme altdaki gördüğünüz gibi bir döngünün içinde hem mail hemde mesaj gönderiyorum. Bu döngü hem çok yavaş döndüğü gibi (10 saniyede 1 kere) hemde 100 kişiye mail attıkdan sonra server kullanılamaz hale geliyor. Bunu server ı kasmadan nasıl yapabilirim ? önerilerinizi bekliyorum.

PHP- Kodu:
$tablo mysql_query ("SELECT * FROM users where atilanmesaj<=3");
while (
$oku mysql_fetch_assoc($tablo)) {
if (
$oku[cins] == $oku[durum] == 1) {

 
$ad htmlspecialchars($ad);
 
$mail htmlspecialchars($mail);
 
$konu htmlspecialchars($konu);
 
$soru htmlspecialchars($soru);
 
$konu "Mesaj";

 
$headers .= "MIME-Version:1.0\n";
 
$headers .= "Content-Type: text/html; charset=iso-8859-9\n";
 
$headers .= "From: Domain.Com<domain@domain.com>\n";
 
$headers .= "BCC: site@domain.com\n";
 
$headers .= "X-Mailer: domain@domain.com\n";
 
$headers .= "X-Priority: 1\n";
                        
$mesaj "<font color='red'>Merhaba <font color='blue'><b>$oku[adsoyad]</b>,\n";
                        
$mesaj .= "<br>";

 @
mail($oku[email], $konu$mesaj$headers);



$veri "INSERT INTO mesajlar VALUES ('$id','$oku[id]','$konu','$mesaj','$durum','$yer','$tarih','$zaman','$gonderen')"
$veri_gir mysql_query ($veri); 
echo 
"Gönderildi $oku[login] <br>"
Alıntı ile Cevapla

  #2 (permalink)   iTrader 
Alt 2006-07-10, 15:12
iyinet - ait Kullanıcı Resmi (Avatar)
Paylaşım için teşekkürler
 
Üyelik tarihi: Sep 2002
Mesajlar: 6.470
Blog Entries: 2
Tecrübe Puanı: 3
iTrader: %100/6
iyinet is just really niceiyinet is just really niceiyinet is just really niceiyinet is just really niceiyinet is just really nice
Standart

Bunu yaptigin makina sana ait dedicated bir makine olmali.
Dedicated degil ise bu tur sorunlar cikacaktir, isin kotusu hosting sirketi hesabini kapatabilir.

Dedicated oldugunu varsayarak...:

SELECT * FROM users where atilanmesaj<=3
Bu dongu her seferinde tum kullanicilari getiriyor, cunku kodlama icinde bu dongunun sonucunu degistirecek bir update islemi yapilmiyor.
Her mesaj yada email gonderildiginde atilanmesaj yada gonderildi alanlarini update etmen gerekiyor ki ayni kisiye tekrar tekrar mail gitmesin.

Mail gonderme islemini loop icinde yapiyorsan dakikada 30 uzerinde email gonderme!

Gerekli duzenlemeleri yaptiktan sonra bu scripti cron icine koy, her dakika calisacak sekilde ve her seferinde "LIMIT 25" ile sorguya sinirlama getir.
__________________
Forum Reklam Site Reklam
Alıntı ile Cevapla

  #3 (permalink)   iTrader 
Alt 2006-07-10, 16:11
Rütbe
 
Üyelik tarihi: Jul 2005
Nerden: about:blank
Mesajlar: 1.007
Tecrübe Puanı: 4
iTrader: %100/2
*siber* is on a distinguished road
Standart

mysql e hiç bir şekilde update yapmamam gerekiyor. Yaparsam zaten gönderdiğim mail in anlamı kalmaz. Bu işlemi yaptığım makina amd 512 ram var. Birde P4.2.8 2 gb ram i olan makinam var acaba bu makinada yapsam bu şekilde kasılma olurmu.
Alıntı ile Cevapla

  #4 (permalink)   iTrader 
Alt 2006-07-10, 16:15
iyinet - ait Kullanıcı Resmi (Avatar)
Paylaşım için teşekkürler
 
Üyelik tarihi: Sep 2002
Mesajlar: 6.470
Blog Entries: 2
Tecrübe Puanı: 3
iTrader: %100/6
iyinet is just really niceiyinet is just really niceiyinet is just really niceiyinet is just really niceiyinet is just really nice
Standart

istersen 2 x 3Ghz Xeon 4gb ram olsun bu sekilde yine sorun olur.
Mysql e update yapmazsan ve dedigim sekilde batch (kumeler seklinde) islem yapmazsan email gondermede sorun yasarsin.
Gonderdigin mailin neden anlami kalmiyor onu anlamis degilim, ben sana bir flag update et diyorum, email gonderip gondermedigini anlaman icin.
__________________
Forum Reklam Site Reklam
Alıntı ile Cevapla

  #5 (permalink)   iTrader 
Alt 2006-07-10, 16:17
Caesar - ait Kullanıcı Resmi (Avatar)
Platinum Member
 
Üyelik tarihi: Jun 2006
Nerden: /dev/null
Mesajlar: 2.576
Tecrübe Puanı: 0
iTrader: %100/6
Caesar will become famous soon enoughCaesar will become famous soon enough
Standart

@iyinet söylemiş limit koyacaksın.
Alıntı ile Cevapla

  #6 (permalink)   iTrader 
Alt 2006-07-10, 16:31
PHP Warner - ait Kullanıcı Resmi (Avatar)
Junior Member
 
Üyelik tarihi: Oct 2005
Mesajlar: 63
Tecrübe Puanı: 0
iTrader: %0/0
PHP Warner is an unknown quantity at this point
Standart

Kısır döngü olmuş
Alıntı ile Cevapla

  #7 (permalink)   iTrader 
Alt 2006-07-10, 16:48
Rütbe
 
Üyelik tarihi: Jul 2005
Nerden: about:blank
Mesajlar: 1.007
Tecrübe Puanı: 4
iTrader: %100/2
*siber* is on a distinguished road
Standart

haklısınız ışık hızı ile gönderemiyicem bu mailleri Tavsiye ettiğiniz işlemi iki makinadan yapıcam artık.

İyi çalışmalar.
Alıntı ile Cevapla

  #8 (permalink)   iTrader 
Alt 2006-07-10, 16:49
iyinet - ait Kullanıcı Resmi (Avatar)
Paylaşım için teşekkürler
 
Üyelik tarihi: Sep 2002
Mesajlar: 6.470
Blog Entries: 2
Tecrübe Puanı: 3
iTrader: %100/6
iyinet is just really niceiyinet is just really niceiyinet is just really niceiyinet is just really niceiyinet is just really nice
Standart

Alıntı:
*siber*´isimli üyeden Alıntı
haklısınız ışık hızı ile gönderemiyicem bu mailleri Tavsiye ettiğiniz işlemi iki makinadan yapıcam artık.

İyi çalışmalar.
Anlamamakta israr ediyorsun.
istersen 10 makina ile yap, bu sekilde yaptikca sorun yasarsin.
Kodunda sorun var, bu sekilde olmaz.
__________________
Forum Reklam Site Reklam
Alıntı ile Cevapla

  #9 (permalink)   iTrader 
Alt 2006-07-10, 17:10
Rütbe
 
Üyelik tarihi: Jul 2005
Nerden: about:blank
Mesajlar: 1.007
Tecrübe Puanı: 4
iTrader: %100/2
*siber* is on a distinguished road
Standart

Alıntı:
iyinet´isimli üyeden Alıntı
Anlamamakta israr ediyorsun.
istersen 10 makina ile yap, bu sekilde yaptikca sorun yasarsin.
Kodunda sorun var, bu sekilde olmaz.

Ben o şekilde devam edicem demiyorum. update ve limit kullanıcam... ama tek db üzerinden yaparsam olmuyor işte onuda ben anlatamıyorum bir db ile mail gönderip atilanmesaj i update yapıcam, ikinci db ile de SELECT yapıcam. Eğer ben atılan mesajları gerçek db üzerinden update yaparsam. Herkesin mesaj sayısını yükseltmiş olurum ki o zamanda benim asıl mesaj atmak istediğim atilanmesaj<=3 ün hiç bir anlamı kalmaz.

PHP- Kodu:
$tablo mysql_query ("SELECT * FROM users where atilanmesaj<=3 ORDER BY id DESC LIMIT 0,50"); 

PHP- Kodu:
$tablo "UPDATE users SET atilanmesaj = '4' WHERE login = '$oku[login]' ";
$sorgu mysql_query($tablo); 
uygunmudur ?
Alıntı ile Cevapla

  #10 (permalink)   iTrader 
Alt 2006-07-10, 17:10
zbahadir - ait Kullanıcı Resmi (Avatar)
Gold Member
 
Üyelik tarihi: Mar 2006
Nerden: Trabzon
Mesajlar: 1.219
Tecrübe Puanı: 3
iTrader: %0/0
zbahadir will become famous soon enough
Standart

Benzer bir kod bende de var, kodu iyi yapamadığım için tek site olmasına rağmen p4 3GHz makineyi inanılmaz kasıyor.
__________________
Bizim Forumlar | ZT
Alıntı ile Cevapla

Cevapla

Seçenekler
Stil


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Server'ı paylaşacak arkadaşlar aranıyor.. Uurz Web Hosting Kurulum Donanım Yazılım 8 2005-05-07 21:22


Bütün Zaman Ayarları WEZ +2 olarak düzenlenmiştir. Şu Anki Saat: 12:06 .


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0

Firefox