One working(though ugly) solution is to create SOAP web service and invoke it from your script with extended SoapClient by overriding "$oneWay" parameter (http://www.php.net/manual/en/soapclient.dorequest.php).
In this case making one way request means that your script doesn't need to wait for response and execution of your code will continue. start(); } foreach($pool as $worker){ $worker->join(); } ?> //coba gan yang bisa akses di browserGan boleh nanya gak soal threading gimana cara pake nya disini saya pake pthreads... apakah ada alternatif lain untuk multi threading?
Tunggu sampai terinstall. sekarang lanjut setting extension pthreads.so supaya bisa dijalankan oleh PHP. tambahkan baris ini ke bagian extension pada file /usr/local/lib/php.ini extension=pthreads.so Nah sekarang pthreads sudah terinstall, berarti sudah saat ini kita mencoba koding PHP dengan metode Thread Process. Pertama salin koding di bawah ini dan simpan sebagai file php dengan nama "baca_buku.php" dan jalankan di PHP CLI. <?php Setelah dijalankan di PHP CLI, tampilannya kurang lebih akan seperti ini : Penjelasan programnya adalah saya membuat sebuah proses antrian untuk membaca 10 buku oleh 3 orang pembaca, namun siapa yang sudah selesai boleh langsung lanjut membaca buku selanjut tanpa harus menunggu yang lainnya selesai terlebih dahulu. Jadi awalnya saya menyiapkan data 10 buku dan 3 pembaca : $AntrianBuku = array('Bobo','Donal Bebek','Doraemon','Kungfu Boy','Dragon Ball','Harry Potter','Hunger Games','Miki Tikus','Peter Pan','Dongeng') ; Kemudian melalui perulangan yang tidak akan berhenti kecuali semua buku telah terbaca, maka thread induk setiap saat akan melakukan pengecekan ke pembaca yang membaca. Jika sedang tidak membaca dan buku masih ada, makan akan di-assign untuk membaca buku. if (!isset($Antrian[$Pembaca])) { Di sini, Kita membuat sebuah thread baru dan langsung menyuruhnya membaca dengan fungsi Thread->start(). Sembari mengecek apakah sudah ada pembaca yang sudah selesai baca, dan disimpan hasil rangkumannya dengan koding di bawah ini : foreach ($Antrian as $Pembaca => $AntrianSaatIni) { Fungsi Thread->isRunning() di sini dimaksudkan untuk mengecek apakah fungsi Thread->run() di thread sudah selesai dijalankan atau belum, jika sudah selesai, maka thread tersebut akan digabungkan ke induk dengan fungsi Thread->join(), sehingga thread Induk bisa membaca data rangkuman dari Thread tersebut. Informasi mengenai PHP Thread sendiri bisa dilihat di sini namun memang untuk PHP Thread ini dokumentasinya masih sangat sedikit sekali, dikarenakan Thread sendiri tidak populer di web programming, karena threading sendiri sudah di-handle sama web server seperti Apache. |