AlfanLA

~ Perfectionist but Flexible ~

Converting "LOVE" Into Computer Code

Multiproses (Forking) di PHP (Bagian 1)

PHP, bahasa pemrograman yang mulai saya kenal sejak tahun 2005 saat sedang menempuh jenjang sarjana di Universitas Islam Indonesia. Sudah berumur 7 tahun sejak pertama kali mempelajarinya, dan sampai sekarang saya sudah cukup familiar dengan bahasa ini. Namun ternyata masih banyak kekuatan-kekuatan PHP yang belum saya eksplorasi dengan penuh, khususnya untuk fungsi-fungsi yang memang hanya berjalan pada mode CLI (Command Line Interface).

Dalam tulisan kali ini, saya akan sharing tentang penggunaan fungsi-fungsi untuk menciptakan multiproses pada bahasa pemrograman PHP mode CLI. Multiproses pada pemrograman PHP banyak digunakan untuk network programming dan background service pada sistem berbasis Unix.

Multiproses bukanlah multithread. Multiproses dan multithread merupakan salah satu teknik pemrosesan secara bersama-sama untuk suatu pekerjaan. Adapun berbedaan diantara keduanya, yaitu:

  1. Multiproses adalah melakukan beberapa pekerjaan dalam waktu yang sama, penggunaan beberapa proses yang berkomunikasi dengan menggunakan pipe, socket ataupun dengan pemakaian memori bersama-sama. Kegagalan pada satu proses tidak terlalu mempengaruhi proses lainnya, karena mereka secara identik adalah proses yang berbeda.
  2. Multithread adalah melakukan dua pekerjaan secara konkuren atau paralel. Multithread pada prinsipnya adalah sebuah proses yang dibagi-bagi pengerjaannya dalam beberapa task. Kegagalan pada satu task akan sangat mempengaruhi task lainnya (proses secara keseluruhan tidak dapat diselesaikan).

Berbicara tentang multithread memang sangat menarik. Tapi tunggu dulu, PHP ternyata tidak mempunyai fungsi untuk menciptakan multithread, PHP hanya mempunyai fungsi untuk menciptakan multiproses. Berbeda dengan bahasa pemrograman Java yang memang sudah mendukung multithread. Semoga versi kedepannya PHP sudah mendukung multithread juga.

Pada tulisan selanjutnya, akan saya berikan contoh kode PHP dalam implementasi multiproses (forking) ini :)