Anti-armenia.ORG - Forumlar - Php-ni sürətli işlətmək



Istifadəçi
    2013-02-22 21:08 GMT                 

TheLock



Gold
Mesaj Sayı : 412
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   18  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


1.Xətaları gizlətmək:
Php səhifəsinin başında error_reporting(0); yazsaq sadə xətalar gizlənər.Ancaq fayl açmaq kimi vacib əməliyyatlar yenə xəta verir,bunu əngəlləmək üçün əmrin əvvəlinə "@" qoymaq lazımdır,bunu bir mysql əmri yazandada istifadə etmək olar.
2.Php qısaltmaları:

    1$sayi=$sayi+1 yazmaq əvəzinə $sayi ++;
    2if($a==5){ $b=2; }else{ $b=7 } yazmaq əvəzinə $b=($a==5)?2:7;

3.İnclude ilə:
if($uye_login==1)
{
// burda çox sətirli bir əməliyyat var
// eyni səhifəyə ziyarətçilər də girir
// və burdakı əməliyyat çox vaxt işə yaramır
}
Burdakı sətirləri fərqli bir fayla köçürüb,faylın adını da user_xəbər.php qoyaq.Bu vəziyyətdə yuxarıdaki if əmri belə olur:
if($user_login==1)
{
include("user_xəbər.php");
}

4.Strlen əvəzinə isset:
if(strlen($nick) > 10)
{
echo "Uzun nik";
}
bunun əvəzinə:
if(isset($nick[11])) echo "Uzun nik";

5.Yerinə görə tək vəya cüt dırnaq işarəsi:
print "əməliyyat nəticəsi: $rəqəm dir";
burda cüt dırnaq işarəsi olması məcburidi amma onun yerinə bu istifadə edilsə daha sürətli olar:
print 'əməliyyat nəticəsi:' . $rəqəm . 'dir';

http://s017.radikal.ru/i404/1202/c6/a2947080a3c4.png
Anti-armenia.ORG
    

Istifadəçi
    2013-02-23 02:27 GMT                 

BlackMinD



Pr0grammer
Mesaj Sayı : 1677
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   62  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : KARABAKH IS AZERBAIJAN!
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


Sitat
error_reporting(0); yazsaq sadə xətalar gizlənər.

Düzdür.
Amma
Sitat
Ancaq fayl açmaq kimi vacib əməliyyatlar yenə xəta verir,

Səhv fikirdir.

Real Misal:
Kod:
ssher@ubuntu:~/13$ cat -n 3.php
     1  <?php
     2  error_reporting(0);
     3  echo file_get_contents('bufaylyoxdur.txt');
     4  exit;
     5
     6
     7
     8
     9  ?>
ssher@ubuntu:~/13$ php -l 3.php
No syntax errors detected in 3.php
ssher@ubuntu:~/13$ php 3.php
ssher@ubuntu:~/13$


Nəsə error gördün?Yox.

Amma error_reporting(E_ALL) etsəydin görərdin:

Kod:
ssher@ubuntu:~/13$ cat -n 3.php
     1  <?php
     2  error_reporting(E_ALL);
     3  echo file_get_contents('bufaylyoxdur.txt');
     4  exit;
     5
     6
     7
     8
     9  ?>

ssher@ubuntu:~/13$ php 3.php
PHP Warning:  file_get_contents(bufaylyoxdur.txt): failed to open stream: No such file or directory in /home/ssher/13/3.php on line 3




strlen() əvəzinə isset() o da səhv fikirdir.


Kod:
ssher@ubuntu:~/13$ cat -n 1.php
     1  <?php
     2  error_reporting(E_ALL);
     3  $nik=str_repeat('A',15);
     4
     5  if (strlen($nik)>11)
     6  {
     7  echo 'NIK UZUNDUR!'. PHP_EOL;
     8  }
     9  exit;
    10
    11
    12
    13  ?>
    14
ssher@ubuntu:~/13$ php -l 1.php
No syntax errors detected in 1.php
ssher@ubuntu:~/13$ php 1.php
NIK UZUNDUR!


ssher@ubuntu:~/13$ cat -n 2.php
     1  <?php
     2  error_reporting(E_ALL);
     3  $nik=str_repeat('A',15);
     4
     5   if(isset($nick[11])) echo "Uzun nik";
     6
     7  ?>
ssher@ubuntu:~/13$ php -l 2.php
No syntax errors detected in 2.php
ssher@ubuntu:~/13$ php 2.php
ssher@ubuntu:~/13$




Fikir ver output yoxdur 2-ci skriptdə. strlen() string-ə aid funksiyadır.Sən isə onu $nik[11] etməklə ümumiyyətlə aləmi qatdın biri birinə.
Onu etməklə sən $nik-i string deyil massiv (yəni array-in 11-ci elementinə tətbiq etdin.

$nik ayrı şeydir $nik[11] ayrı şey.Cİn ayrı şeytan ayrı bir sözlə.

Həmçinin digər tərəfdən isset() variablenin mövcudluğunu yoxlamaq üçündür.
strlen() isə variablenin variablenin value-sinin uzunluğunu ölçmək üçündür.
Biri var deyimki:
Otaqda filan adlı adam var? isset()

Biri də var deyirəm otaqda filan adlı adamın neçə yaşı var? strlen()
İnisializə etməmiş variableni avtomatik keçmisən uzunluğunu yoxlamağa.

Fərqi gördün?


Kod:
if($a==5){ $b=2; }else{ $b=7 } yazmaq əvəzinə $b=($a==5)?2:7;
de]
Bu isə düzdür.

Həmçinin variablenin qarşısını @ işarəsi atmaq da (aka suppress) də məsləhət görülmür.
O halda skriptdə nə error-un getdiyini görməyəcəksən.
Gəl ondan sonra debug elə kodu tap görüm hardadır səhv.

Gözəl yazılmış skript heç vaxt işi zamanı NOTİCE~~ WARNING Göstərməməlidir.
Ona görə də DEVELOPMENT vaxtı
error_reporting(E_ALL); məsləhətlidir.
Production serverlərdə isə bəli error-ları clientdən gizlətməlisən.Amma serverdə loglaşdırmalısan ki, biləsən problemi haradadır skriptin.

Ana VƏTƏN!
Anti-armenia.ORG
    

Istifadəçi
    2013-02-23 09:12 GMT                 

Sexavet



Creative
Mesaj Sayı : 199
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   16  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək :
Yaş : 29
Mesaj :

Mövzunu Paylaş!


Sitat
#23036 BlackMinD :
Kod:
ssher@ubuntu:~/13$ cat -n 2.php
     1  <?php
     2  error_reporting(E_ALL);
     3  $nik=str_repeat('A',15);
     4
     5   if(isset($nick[11])) echo "Uzun nik";
     6
     7  ?>
ssher@ubuntu:~/13$ php -l 2.php
No syntax errors detected in 2.php
ssher@ubuntu:~/13$ php 2.php
ssher@ubuntu:~/13$



Burda outputun boş gəlməsinin səbəbi: $nik=str_repeat('A',15); ..$nick[11].. bax birində $nik yazmısan birində $nick...
TheLock əslində düz qeyd edibdi, sadəcə orda bir xırda səhv var oda:
Tutaqki:
Kod:
$ad="abcdefgh";

burada $ad-ın 1-ci simvolunu almaq istəyiriksə $ad[1] yox $ad[0]-dan istifadə edəcəyik... Yəni:
Kod:
print $ad[0]; // Output a
print $ad[1]; // Output b

TheLock-un yazdıqı nümunədə nickin 10 simvoldan böyük olmamasını istəyir...
Kod:
if(isset($nick[11])) echo "Uzun nik";

Bu səhfdi, çünki burda 11 simvolda yazsan qəbul edəcək...
Kod:
if(isset($nick[10])) echo "Uzun nik";

yazsan ancaq düz olar.


Sitat

print "əməliyyat nəticəsi: $rəqəm dir";
burda cüt dırnaq işarəsi olması məcburidi amma onun yerinə bu istifadə edilsə daha sürətli olar:
print 'əməliyyat nəticəsi:' . $rəqəm . 'dir';


+ bu yazıyla razı deyiləm... Əslində özüm durub test eləməmişəmki hansı halda script daha tez işləyəcək... php.net-dən oxumuşam, orda test eləyib saniyələrini yazmışdılar hərbir hal üçün...
Yazılana görə ən sürətli bu şəkildə olardı:
Kod:
print <<<METIN
əməliyyat nəticəsi: {$rəqəm} dir
METIN;
/code]
+ 1-ci yazdıqın nümunə 2-ciyə görə daha sürətli olacaq... Sən tərsini yazmısan... Yenə deyirəm bunu mən test eləməmişəm, sadəcə php.net-dən götürdüyüm bir məlumatdı...

Anti-armenia.ORG
    

Istifadəçi
    2013-02-23 09:51 GMT                 

BlackMinD



Pr0grammer
Mesaj Sayı : 1677
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   62  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : KARABAKH IS AZERBAIJAN!
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


@Sexavet doğrudane)))))))) 1-ci dəfədir o tipli coding görürəm açığı nayi var çaşdırdı məni))

becnhmark-a qalanda isə:
Kod:
============================================
time php 17.php
ssher@ubuntu:~/13$ cat 17.php
<?php
/*
real    0m21.402s
user    0m0.288s
sys     0m7.336s
*/

$i=0;
while($i<=100000)
{
$i++;

print "BU TESTDIR $i";

}

?>


============================================
time php 17.php
ssher@ubuntu:~/13$ cat 17.php
<?php

/*

real    0m22.783s
user    0m0.396s
sys     0m7.736s


*/

$i=0;
while($i<=100000)
{
$i++;

print 'BU TEST ' . $i . ' dir';

}

?>

============================================

time php 17.php

ssher@ubuntu:~/13$ cat 17.php
<?php
/*
real    0m23.178s
user    0m0.312s
sys     0m7.832s


*/
$i=0;

while($i<=100000)
{
$i++;
print <<<METIN
əməliyyat nəticəsi: {$i} dir
METIN;

}

?>
============================================


Ən gec işləyən elə HEREDOC style oldu.
Ən tez işləyən isə double quote.
single quote isə 2-ci mövqedədir))
dədir))
[/code]

Bunu http://stackoverflow.com/questions/3446216/difference-between-single-quote-and-double-quote-string-in-php
@Bang Dao commentini:
nəzərə alsaq düşünürəm benchmark-ım reallığa yaxındır.

Test edilən php version:

ssher@ubuntu:~/13$ php -v
PHP 5.3.10-1ubuntu3.5 with Suhosin-Patch (cli) (built: Jan 18 2013 23:45:59)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
with Suhosin v0.9.33, Copyright (c) 2007-2012, by SektionEins GmbH


+
ssher@ubuntu:~/13$ uname -a
Linux ubuntu 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:15:33 UTC 2013 i686 i686 i386 GNU/Linux

Ana VƏTƏN!
Anti-armenia.ORG
    

Istifadəçi
    2013-02-23 12:09 GMT                 

Sexavet



Creative
Mesaj Sayı : 199
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   16  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər :
Ölkə :
Məslək :
Yaş : 29
Mesaj :

Mövzunu Paylaş!


Həvəs var ee, Bro )) Oturub bir-bir test eləmisən ) Mən yoxlamamışdım heç, sadəcə dedim php.net-də səhf məlumat paylaşılmaz yəgin, ona görə burda yazdım...Yəgin ola bilsin php versiyasına görə fərqlənirlər...
Nə qəribə beyin var ee bizde, millisaniyə qabaqı düşmək üçün dəqiqələrimizi sərf ediriy testlər eliyiriy, mövzu aç, müzakirə elə axaxaxa ))

Anti-armenia.ORG
    

Istifadəçi
    2013-02-23 20:55 GMT                 

BlackMinD



Pr0grammer
Mesaj Sayı : 1677
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   62  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : KARABAKH IS AZERBAIJAN!
Ölkə :
Məslək :
Yaş :
Mesaj :

Mövzunu Paylaş!


Sitat
#23053 Sexavet :
Həvəs var ee, Bro )) Oturub bir-bir test eləmisən ) Mən yoxlamamışdım heç, sadəcə dedim php.net-də səhf məlumat paylaşılmaz yəgin, ona görə burda yazdım...Yəgin ola bilsin php versiyasına görə fərqlənirlər...
Nə qəribə beyin var ee bizde, millisaniyə qabaqı düşmək üçün dəqiqələrimizi sərf ediriy testlər eliyiriy, mövzu aç, müzakirə elə axaxaxa ))



Yoxe belə kimdir vaxt öldürən benchmarkla)) O qədər də vaxt aparmadı 10 dəqiqə uzağı.
PHP versiyasının sözsüzki fərqi var CGİ/FAST CGİ-dırdır command line.Düşünürəm reallığa yaxındır nəticə.Ammaki şəxsən mənim üçün də sürətlilikdə fərq yoxdur.Onsuz da server paxat eliyir skripti güc serverə düşür))))

Ana VƏTƏN!
Anti-armenia.ORG
    

Istifadəçi
    2014-01-31 02:28 GMT                 

ViVa



İstifadəçi
Mesaj Sayı : 163
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   2  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : Mexfi
Ölkə :
Məslək : Crypto Miner
Yaş : 121
Mesaj :

Mövzunu Paylaş!


Təşəkkür Arxivdədi

Anti-armenia.ORG
    

Istifadəçi
    2014-01-31 12:22 GMT                 

H!T4CH



VIP
Mesaj Sayı : 348
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   12  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : BAKU
Ölkə :
Məslək :
Yaş : 130
Mesaj :

Mövzunu Paylaş!


Təşəkkür Bro

CODE
Anti-armenia.ORG
    

Istifadəçi
    2014-08-25 19:37 GMT                 

MiCRoHACK



İstifadəçi
Mesaj Sayı : 1
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   0  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : Haciqabul
Ölkə :
Məslək : Wap Site Make
Yaş : 27
Mesaj :

Mövzunu Paylaş!


Tşk Yaxşi melumatdı

[pm]Miri[/pm]
Anti-armenia.ORG