Penggunaan fungsi SHITDOWN pada PHP

Indonesian [Bahasa Indonesia] translation by ⚡ Rova Rindrata [you can also view the original English article]

Dua kali sebulan, kami meninjau kembali beberapa posting favorit pembaca kami dari sepanjang sejarah Nettuts+.

Bahkan setelah menggunakan PHP selama bertahun-tahun, kami menemukan fungsi dan fitur yang tidak kami ketahui. Beberapa darinya bisa sangat berguna, namun kurang dimanfaatkan. Dengan pemikiran tersebut, saya telah mengumpulkan daftar sembilan fungsi dan fitur PHP yang sangat berguna yang Anda harus mengetahuinya.

1. Fungsi dengan Jumlah Argumen yang Bebas

Anda mungkin sudah mengetahui bahwa PHP memungkinkan Anda mendefinisikan fungsi dengan argumen opsional. Tapi ada juga metode untuk mengizinkan jumlah argumen fungsi yang benar-benar bebas.

Pertama, berikut adalah contoh dengan argumen opsional saja:

// function with 2 optional arguments
function foo[$arg1 = '', $arg2 = ''] {

  echo "arg1: $arg1\n";
	echo "arg2: $arg2\n";

}


foo['hello','world'];
/* prints:
arg1: hello
arg2: world
*/

foo[];
/* prints:
arg1:
arg2:
*/

Sekarang, mari kita lihat bagaimana kita bisa membangun sebuah fungsi yang menerima berbagai jumlah argumen. Kali ini kita akan memanfaatkan func_get_args[]:

// yes, the argument list can be empty
function foo[] {

	// returns an array of all passed arguments
	$args = func_get_args[];

	foreach [$args as $k => $v] {
		echo "arg".[$k+1].": $v\n";
	}

}

foo[];
/* prints nothing */

foo['hello'];
/* prints
arg1: hello
*/

foo['hello', 'world', 'again'];
/* prints
arg1: hello
arg2: world
arg3: again
*/

2. Menggunakan Glob[] untuk Menemukan File

Banyak fungsi PHP yang memiliki nama panjang dan deskriptif. Namun mungkin akan sulit untuk menjelaskan apa yang dilakukan fungsi bernama glob[] kecuali Anda sudah akrab dengan kata tersebut dari tempat lain.

Anggap sebagai versi yang lebih mumpuni dari fungsi scandir[]. Ia membiarkan Anda mencari file dengan menggunakan pola.

// get all php files
$files = glob['*.php'];

print_r[$files];
/* output looks like:
Array
[
    [0] => phptest.php
    [1] => pi.php
    [2] => post_output.php
    [3] => test.php
]
*/

Anda bisa mengambil beberapa tipe file seperti ini:

// get all php files AND txt files
$files = glob['*.{php,txt}', GLOB_BRACE];

print_r[$files];
/* output looks like:
Array
[
    [0] => phptest.php
    [1] => pi.php
    [2] => post_output.php
    [3] => test.php
    [4] => log.txt
    [5] => test.txt
]
*/

Perhatikan bahwa sebenarnya file bisa dikembalikan dengan path, tergantung pada query Anda:

$files = glob['../images/a*.jpg'];

print_r[$files];
/* output looks like:
Array
[
    [0] => ../images/apple.jpg
    [1] => ../images/art.jpg
]
*/

Jika Anda menginginkan path lengkap dari masing-masing file, Anda cukup menggunakan fungsi realpath[] pada nilai-nilai yang dikembalikan:

$files = glob['../images/a*.jpg'];

// applies the function to each array element
$files = array_map['realpath',$files];

print_r[$files];
/* output looks like:
Array
[
    [0] => C:\wamp\www\images\apple.jpg
    [1] => C:\wamp\www\images\art.jpg
]
*/

3. Informasi Penggunaan Memori

Dengan mengamati penggunaan memori dari skrip, Anda dapat mengoptimalkan kode Anda lebih baik lagi.

PHP memiliki garbage collector dan memory manager yang cukup kompleks. Jumlah memori yang digunakan oleh skrip Anda. bisa naik dan turun selama eksekusi skrip. Untuk mendapatkan penggunaan memori saat ini, kita dapat menggunakan fungsi memory_get_usage[], dan untuk mendapatkan jumlah tertinggi dari memori yang digunakan pada setiap titik, kita dapat menggunakan fungsi memory_get_peak_usage[].

echo "Initial: ".memory_get_usage[]." bytes \n";
/* prints
Initial: 361400 bytes
*/

// let's use up some memory
for [$i = 0; $i < 100000; $i++] {
	$array []= md5[$i];
}

// let's remove half of the array
for [$i = 0; $i < 100000; $i++] {
	unset[$array[$i]];
}

echo "Final: ".memory_get_usage[]." bytes \n";
/* prints
Final: 885912 bytes
*/

echo "Peak: ".memory_get_peak_usage[]." bytes \n";
/* prints
Peak: 13687072 bytes
*/

4. Informasi Penggunaan CPU

Untuk ini, kita akan memanfaatkan fungsi getrusage[]. Perlu diingat bahwa ini tidak tersedia pada platform Windows.

print_r[getrusage[]];
/* prints
Array
[
    [ru_oublock] => 0
    [ru_inblock] => 0
    [ru_msgsnd] => 2
    [ru_msgrcv] => 3
    [ru_maxrss] => 12692
    [ru_ixrss] => 764
    [ru_idrss] => 3864
    [ru_minflt] => 94
    [ru_majflt] => 0
    [ru_nsignals] => 1
    [ru_nvcsw] => 67
    [ru_nivcsw] => 4
    [ru_nswap] => 0
    [ru_utime.tv_usec] => 0
    [ru_utime.tv_sec] => 0
    [ru_stime.tv_usec] => 6269
    [ru_stime.tv_sec] => 0
]

*/

Mungkin itu terlihat sedikit samar kecuali Anda sudah memiliki latar belakang system administration. Berikut adalah penjelasan dari masing-masing nilai [Anda tidak perlu menghafalnya]

  • ru_oublock: blokir operasi output
  • ru_inblock: blok operasi input
  • ru_msgsnd: pesan yang dikirim
  • ru_msgrcv: pesan yang diterima
  • ru_maxrss: menetapkan ukuran yang tetap tinggal maksimum
  • ru_ixrss: ukuran berbagi memori integral
  • ru_idrss: ukuran data yang tidak dibagi integral
  • ru_minflt: pembaruan halaman
  • ru_majflt: kesalahan halaman
  • ru_nsignals: sinyal yang diterima
  • ru_nvcsw: konteks switch sukarela
  • ru_nivcsw: konteks switch disengaja
  • ru_nswap: swap
  • ru_utime.tv_usec: waktu yang digunakan pengguna [mikrodetik]
  • ru_utime.tv_sec: waktu yang digunakan pengguna [detik]
  • ru_stime.tv_usec: waktu yang digunakan sistem [mikrodetik]
  • ru_stime.tv_usec: waktu yang digunakan sistem [detik]

Untuk melihat berapa banyak daya CPU yang telah dikonsumsi skrip ini, kita perlu melihat nilai-nilai 'user time' dan 'system time'. Porsi detik dan mikrodetik disediakan terpisah secara default. Anda dapat membagi nilai mikrodetik sebesar 1 juta, dan menambahkannya ke nilai detik, untuk mendapatkan total detik sebagai angka desimal.

Mari kita lihat contohnya:

// sleep for 3 seconds [non-busy]
sleep[3];

$data = getrusage[];
echo "User time: ".
	[$data['ru_utime.tv_sec'] +
	$data['ru_utime.tv_usec'] / 1000000];
echo "System time: ".
	[$data['ru_stime.tv_sec'] +
	$data['ru_stime.tv_usec'] / 1000000];

/* prints
User time: 0.011552
System time: 0
*/

Meskipun skrip butuh waktu sekitar 3 detik untuk berjalan, penggunaan CPU adalah sangat sangat rendah. Karena selama operasi sleep, skrip benar-benar tidak mengkonsumsi sumber daya CPU. Ada banyak tugas-tugas lainnya yang mungkin memakan waktu yang nyata, tapi mungkin tidak menggunakan waktu CPU, seperti menunggu operasi disk. Jadi seperti yang Anda lihat, penggunaan CPU dan panjang sebenarnya dari runtime tidak selalu sama.

Berikut adalah contoh yang lain:

// loop 10 million times [busy]
for[$i=0;$i hello
    [1] => 42
    [2] => Array
        [
            [0] => 1
            [1] => two
        ]

    [3] => apple
]
*/

Ini adalah metode serialisasi asli dari PHP. Namun, sejak JSON telah menjadi begitu populer dalam beberapa tahun terakhir, mereka memutuskan untuk menambahkan dukungan untuknya di PHP 5.2. Sekarang Anda dapat menggunakan fungsi json_encode[] dan json_decode[] juga:

// a complex array
$myvar = array[
	'hello',
	42,
	array[1,'two'],
	'apple'
];

// convert to a string
$string = json_encode[$myvar];

echo $string;
/* prints
["hello",42,[1,"two"],"apple"]
*/

// you can reproduce the original variable
$newvar = json_decode[$string];

print_r[$newvar];
/* prints
Array
[
    [0] => hello
    [1] => 42
    [2] => Array
        [
            [0] => 1
            [1] => two
        ]

    [3] => apple
]
*/

Ini lebih kompak, dan yang terbaik dari semuanya, kompatibel dengan javascript dan banyak bahasa lainnya. Namun, untuk objek-objek yang kompleks, beberapa informasi yang mungkin akan hilang.

8. Mengompresi String

Ketika berbicara tentang kompresi, kita biasanya berpikir tentang file, seperti arsip ZIP. Ini dimungkinkan untuk mengompres string panjang dalam PHP, tanpa melibatkan setiap file arsip.

Dalam contoh berikut kita akan menggunakan fungsi gzcompress[] dan gzuncompress[]:

$string =
"Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nunc ut elit id mi ultricies
adipiscing. Nulla facilisi. Praesent pulvinar,
sapien vel feugiat vestibulum, nulla dui pretium orci,
non ultricies elit lacus quis ante. Lorem ipsum dolor
sit amet, consectetur adipiscing elit. Aliquam
pretium ullamcorper urna quis iaculis. Etiam ac massa
sed turpis tempor luctus. Curabitur sed nibh eu elit
mollis congue. Praesent ipsum diam, consectetur vitae
ornare a, aliquam a nunc. In id magna pellentesque
tellus posuere adipiscing. Sed non mi metus, at lacinia
augue. Sed magna nisi, ornare in mollis in, mollis
sed nunc. Etiam at justo in leo congue mollis.
Nullam in neque eget metus hendrerit scelerisque
eu non enim. Ut malesuada lacus eu nulla bibendum
id euismod urna sodales. ";

$compressed = gzcompress[$string];

echo "Original size: ". strlen[$string]."\n";
/* prints
Original size: 800
*/



echo "Compressed size: ". strlen[$compressed]."\n";
/* prints
Compressed size: 418
*/

// getting it back
$original = gzuncompress[$compressed];

Kami mampu mencapai pengurangan ukuran hampir 50%. Juga fungsi gzencode[] dan gzdecode[] mencapai hasil yang sama, dengan menggunakan berbagai algoritma kompresi.

9. Mendaftarkan Fungsi Shutdown

Ada sebuah fungsi yang disebut register_shutdown_function[], yang akan mengijinkan Anda menjalankan beberapa kode yang tepat sebelum skrip selesai dijalankan.

Bayangkan bahwa Anda ingin menangkap beberapa acuan statistik pada akhir eksekusi skrip, seperti berapa lama waktu yang dibutuhkan untuk menjalankannya:

// capture the start time
$start_time = microtime[true];

// do some stuff
// ...

// display how long the script took
echo "execution took: ".
		[microtime[true] - $start_time].
		" seconds.";

Pada awalnya ini mungkin tampak sepele. Anda hanya menambahkan kodenya ke bagian paling bawah dari skrip dan dijalankan sebelum selesai. Namun, jika Anda pernah memanggil fungsi exit[], kode itu tidak akan pernah berjalan. Juga, jika ada kesalahan fatal, atau jika skrip dihentikan oleh pengguna [dengan menekan tombol Stop di browser], lagi-lagi itu tidak dapat berjalan.

Ketika Anda menggunakan register_shutdown_function[], kode Anda akan mengeksekusi tidak peduli mengapa skrip ini telah berhenti berjalan:

$start_time = microtime[true];

register_shutdown_function['my_shutdown'];

// do some stuff
// ...


function my_shutdown[] {
	global $start_time;

	echo "execution took: ".
			[microtime[true] - $start_time].
			" seconds.";
}

Kesimpulan

Apakah Anda menyadari fitur-fitur PHP lainnya yang tidak banyak diketahui tetapi dapat cukup berguna? Silakan berbagi dengan kami di komentar. Dan terima kasih untuk membaca!

Apa kegunaan fungsi isset [] pada PHP?

Fungsi isset pada PHP adalah Fungsi isset [] digunakan untuk memeriksa apakah suatu variabel sudah diatur atau belum. Fungsi isset [] mengembalikan false jika variabel pengujian berisi nilai NULL.

Apa fungsi explode pada PHP?

explode[] pada bahasa pemrograman php digunakan untuk memecah sebuah string menjadi array berdasarkan tanda pemisah [sepator] yang digunakan. fungsi explode ini digunakan untuk berbagai hal yang spesifik berhubungan dengan string. penjelasan: sepator adalah tanda pemisah.

Fungsi PHP manakah yang digunakan untuk mencari penggunaan memori?

Untuk mendapatkan penggunaan memori saat ini, kita dapat menggunakan fungsi memory_get_usage[], dan untuk mendapatkan jumlah tertinggi dari memori yang digunakan pada setiap titik, kita dapat menggunakan fungsi memory_get_peak_usage[].

Apa fungsi dari Explode?

fungsi explode adalah fungsi php yang memiliki fungsi sebagai pemisah string. jadi sebuah string akan di pecahkan menurut tanda pisah yang di tentukan sendiri. jadi string yang telah di pecah, akan menjadi array.

Bài mới nhất

Chủ Đề