PHP -də if , update səhvi

Salam , php – de qarşıma belə problemlər cıxır,

Məsələn:

$a = mysql_query("SELECT * FROM `mysql_baza` where lis ='".$lis."'");
$users = mysql_fetch_array($a);
$duel = $users['duel'];

if($duel != 1){

@mysql_query("UPDATE `mysql_baza` SET `duel` = '1' , `bonus` = bonus + '1' WHERE `lis` = '".$lis."';");

}

Normal halda bonus 1 artandan sonra ikinci artmamalıdır, amma linkin üstün’ tez-tez dayanmadan kilik edəndə bonus 2-3 dəfə artır. Bu problem neden ola biler? yazılan funksiya adi qaydada tam qaydasında işleyir. Yalnız linkin üstüne tez tez klik edəndə bu problem olur.


Yadda saxlama
Kateqoriya: Sual . , , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (7 cavab var)

(11:28, 22/04/2013 ) #29193

Salam. Problem siz deyən kimidirsə, deməli bir klikdəki prosesdə update getməmiş o biri klikdəki proses işə düşür və hər ikisi if baryerini aşa biir. Çünki biri bitməmiş o biri işə düşüb. Maraqlıdır siz əllə klik etməklə mikrosaniyələrdə baş verən proseslərin arasına necə girə bilirsiniz, yəqin servriniz ləng işləyir. Belə edin, table-a last_update_time sütunu əlavə edin, oraya hər dəfə ən son uptade-i set edib php time ilə yazın.
Sonra if($duel != 1) şərtini belə əvəz edin if($duel != 1 and (time()-$last_update_time)>2000) //yəni son update-dən heç olmasa 2 saniyə keçsə işləsin.
Məncə bununla işləyər. İndi təbii ki, tam dəqiq kod yazmadım, sadəcə ümumi ideya kimi verdim, ki vaxt kəsikləri ilə kontrol edin bu prosesi.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:32, 22/04/2013 ) #29197

Bu hissədə heç bir səhvlik yoxdu. Bundan əvvəlki və sonrakı sətirləri də yazsan nəsə tapmaq olar. Göstərilən hissə kifayət etmir.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(14:05, 22/04/2013 ) #29201

E. Hacı , Yazdiqiniz cavaba gore cox sagolun.
Men sizin dediyiniz kimi variantlar iwletmiwem. hardasa 50% qarwisini alir.Bu problem esasen Google Chrome ile daxil olan istifadecilerde daha cox olur.Istifadeciler bunu bildiklerne gore her kes linkin ustune tez tez klik edir,buda daha cox problem yaradir.

E. Hacı , Yazdiqiniz cavaba gore cox sagolun.
Men sizin dediyiniz kimi variantlar işletmişem hardasa 50% qarşisini alir.Bu problem esasen Google Chrome ile daxil olan istifadeçilerde daha çox olur.Istifadeçiler bunu bildiklerine gore her kes linkin üstüne tez tez klik edir,buda daha cox problem yaradir.

istifade etdiyim hostingler meşhur şirketler olub ,biri http://www.godaddy.com/ .

Yiqdiqim sciriptde PHP -lerde SELECT * emrinden istifade etmişem, problem bundan ola biler? Cün ki optimal variant SELECT setr1,setr2 gosterilir.Istifadeçi çoxaldiqca bu problem dahada artir, hetda shirket terefinden mysql baza baqlanir.Sebeb eyni anda
mysql bazaya gönderilen sorgularin çoxluqu , ve yaxud saytiniz bizim
prosessor teleblerini ötüb.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (14:23, 22/04/2013 ) #29205

    Yox, o halda sizdə kodda başqa yerdə problem var əmin olun. Çünki siz yazan kodda belə bir hal olmamalı idi, mən hər ehtimala qarşı 100% qarşısını alacaq əlavə bir şərt də dedim. O şərtlə belə bu hal təkrarlanırsa, deməli sizdə kodda başqa yerdə problem var, səhvi burda axtarmayın.
    Qaldı Godaddy-yə, shared hostinq ancaq statik vizitka saytları üçün yarayır. Sizin sayt xidməti saytdırsa mütləq və mütləq VDS(Virtual Dedicated Server) almaq lazımdır. Əks halda tez-tez belə problemlərlə üzləşəcəksiniz sizdən xəbərsiz ya mysqli bağlayacaqlar ya hostinqi suspend edəcəklər i high cpu load verir filan.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(15:39, 22/04/2013 ) #29211

Meslehetli hosting ve ya reseller veren şirket hansıdır ?
Hal hazırda bele hallar azalır.

Bu kodla 50% problem yaranırdısa

  $a = mysql_query("SELECT * FROM `mysql_baza` where lis ='".$lis."'");
	$users = mysql_fetch_array($a);
	$duel = $users['duel'];
	 
	if($duel != 1){
	 
@mysql_query("UPDATE `mysql_baza1` SET `duel` = '1'  WHERE `lis` = '".$lis."';");
@mysql_query("UPDATE `mysql_baza2` SET `bonus` = bonus + '1' WHERE `lis` = '".$lis."';");
	}

Bu halda ise 10-20% e enir

	if($duel != 1){
@mysql_query("UPDATE `mysql_baza1` SET `duel` = '1'  WHERE `lis` = '".$lis."';")
 && 
@mysql_query("UPDATE `mysql_baza2` SET `bonus` = bonus + '1' WHERE `lis` = '".$lis."';");
	}

Godaddy şirketi MYSQL-i baglayanda php lerde SELECT * emrinden istifade etmemeyimi bildirdi.
Sciript daha optimal yıqılmalıdır meselen: SELECT setr1,setr2.
Fikrimce eyni anda 150-200 nefer bir klike vuranda hemcinin mysql-da saysız geder sorgular olarsa,
SELECT * emri melumatlari oxumaqı lengidir.

Istifadeci az olanda, mysql tez tez silinende bele problem olmur.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (15:43, 22/04/2013 ) #29213

    Nə hostinq nə reseller. VDS lazım. Ucuz və optimal alman Hetzneridir. Normal qiymətə isə Site5, Godaddy və.s.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (15:45, 22/04/2013 ) #29214

    10-20% söhbəti olmamalıdır burda, ya doğru olmalı ya da olmamalı. Yəni 0% olmalıdır, əks istənilən hal kodda səhv var və ya hostinqdə mysql serverdə problem var deməkdir.
    Qaldı Godaddy-yə, dediyim kimi * ya field adı yazmaq bunlar xırda optimizələrdir, bunları sizə onlar deməli deyil, bu sizin şəxsi işinizdir, ona görə də öz serveriniz olmalıdır.

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

Software Developer cavab verdi - Qırılmış nömrə nə vaxt tam bağlanır (3 saat əvvəl)

Emil Imanov cavab verdi - Rus dilindən mətni tərcümə etmək (6 saat əvvəl)

Software Developer cavab verdi - Payoneer kartdan pul çıxartdıqda vergi (2 gün əvvəl)

Software Developer cavab verdi - Wise vasitəsilə bank kartına pul köçürmə (6 gün əvvəl)

Software Developer cavab verdi - Rus dilindən mətni tərcümə etmək (6 gün əvvəl)

Cənab cavab verdi - Almanca söz bazası yığmaq (9 gün əvvəl)

rdrobert cavab verdi - Mikrofon süngərinə yazı (10 gün əvvəl)

rdrobert cavab verdi - Yerli virtual olaraq dost tapmaq platforması (10 gün əvvəl)

rdrobert cavab verdi - Almanca söz bazası yığmaq (10 gün əvvəl)

rdrobert cavab verdi - Playstation 4 almaq, Playsation klub açmaq (10 gün əvvəl)

rdrobert cavab verdi - Proqramistin ixtsasi hansidir? (10 gün əvvəl)

Software Developer cavab verdi - Azercell Kabinetim aplikasiyasında İstəSən tarifi haqqında (12 gün əvvəl)

Software Developer cavab verdi - Proqramistin ixtsasi hansidir? (12 gün əvvəl)

byshako cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (22 gün əvvəl)

rdrobert cavab verdi - Honeygain, passiv gelir (23 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 607 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23237 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024