PHP Hassas kere Başlarken

5 Cevap php

Ben ne olursa olsun belirli bir scriptin yürütme zaman, her tarih () çağrısı ne olursa olsun işlevi komut dosyası içinde denir nerede aynı damgası dönecektir fark etmişsinizdir. Sadece komut ilk çalışmaya başlama zamanını döndürür gibi görünüyor.

Günlük amaçlar için, bir komut dosyası içinde artımlı damgaları elde edebilmek için son derece yararlı olacaktır. Bu mümkün mü? Nispeten hafif olduğunu bu yapmak için bir yolu var mı?

Edit: microtime() fonksiyonu için örnek bunu yapmak olabilir önerir misiniz. Herkes teyit edebilir?

Update: microtime () çalışır, ancak tamsayılar (yani hiçbir mikrosaniye) olarak damgalarını kabul tarihi () çünkü ben date () fonksiyonu ile biçimlendirmek olamaz. Nasıl (Microtime'da tarafından döndürülen değeri düzgün biçimlendirilmiş bir tarih alabilirim?)

5 Cevap

http://us.php.net/microtime aynı komut dosyası içinde bana farklı zamanlarda veriyor.

Her şeyden önce, date() damgası biçimlendirmek için kullanılır - bu date(), ikinci parametre olmadan çağrıldığında, geçerli zaman damgası kullanmak edeceğiz sadece varsayılan davranış. date('Y-m-d') burada time() size verecektir date('Y-m-d', time()) arama gibi aynı çağrı - Kullanılan zaman damgası fonksiyon denir an damgası olacak

[...] the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).

Script çok hızlı ve hiçbir zaman damgası değişiklik sonuçlanan bir saniye içinde çalışır çünkü sadece aynı damgası, date() aramak her zaman olsun.

microtime() dönüş değerini biçimlendirme ikinci sorunu çözmek için aşağıdakileri yapabilirsiniz (denenmemiş)

function formatTime($microtime, $format)
{
    list($timestamp, $fraction) = explode('.', $microtime);
    return date($format, (int)$timestamp) . '.' . $fraction;
}

Verilen değer $microtime bir float, hangi geçerken almak true parametre olarak microtime() olmalıdır

Benim makinede bu kodu koştu:

<?php
$time_start = time();

sleep(2);

$time_end = time();

print 'Start: ' . date("m/d/Y @ g:i:sA", $time_start) . '<br>';
print 'End: ' . date("m/d/Y @ g:i:sA", $time_end);
?>

Ve bu çıkış:

Start: 10/23/2008 @ 3:12:23PM
End: 10/23/2008 @ 3:12:25PM

Yürütme başladı time() sadece zaman geri dönmüyor inanmak beni götürüyor.

Sen zamanlama alma ve profil bilgilerini için Pear Benchmarking package kullanabilirsiniz.

Ben kullanılan PHP sürümüne bağlıdır acaba? Benim hatırlama () istek başlangıç ​​damgası döndü o zaman oldu, ama I see in the manual, bu yanlış.

Notu "isteği başlangıç ​​Damgası PHP 5.1 beri $ _SERVER ['REQUEST_TIME'] kullanılabilir" diyor. Bu önce PHP 5.1, time () isteğin başında damgası döndü anlamına mı geliyor?