Vọc Thử Multi-thread Trong PHP - KiKi Guru
Có thể bạn quan tâm
Multi-thread là gì?
Multithread cho phép nhiều thành phần trong một chương trình được thực thi đồng thời trong một chương trình. Multithread cho phép ứng dụng của bạn tận dụng hết chức năng xử lý của bộ xử lý trung tâm (CPU).
Hiện tại multithread được hỗ trợ trên các ngôn ngữ hay nền tảng như Java, .Net, v.v….Trong khi đó khái niệm này vẫn chưa thật sự phổ biến trong môi trường của ngôn ngữ PHP. Nguyên nhân của những vấn đề này, cũng như các vấn đề phức tạp hơn mình sẽ thảo luận kỹ hơn vào các bài viết ở các kỳ sau( nếu rảnh)
Cài thử
Để chạy được các chương trình có hỗ trợ multithread trong php thì những gì chúng ta cần 2 thứ:
- PHP phải hỗ trợ ZTS (Zend thread safe), mặc định là bản download về là không có cái này.
- pthreads extension được load vào PHP
Với điều kiện 1 thì chúng ta cần phải compile là ngôn ngữ PHP và điều kiện thứ 2 thì các bạn có thể tham khảo tại php.net. Tuy nhiên theo mình thì để cài đặt 2 thứ này khá tốn thời gian và công sức. Do đó mình đề nghị các bạn cài đặt thông qua sử dụng Docker với thời gian cài đặt nhanh và hiệu quả. Do mình đã quên cái xài windows nên các bài viết của mình sẽ chỉ giới thiệu các bạn trên môi trường linux nói chung (thật ra là Ubuntu:14.04 LTS).
- Cài docker và pull image có PHP + pthread
2. Test thử coi chạy dc PHP hok nhé!
$ mkdir multithread && cd multithread $ echo "<?php echo 'PHP is very nice'.PHP_EOL; " > main.php $ docker run -it --rm --name multithread -v $(pwd):/multithread wyrihaximus/php70-pthreads /multithread/main.phpHình bên dưới là kết quả khi thực hiện theo các bước như trên.
Bạn nào đang dùng Windows 10 và PHP7 có thể tham khảo bài viết cách cài đặt pthreads trên windows 10 để chiến multithreading.
Lập trình thử multi-thread trong PHP
<?php class AsyncOperation extends Thread { public function __construct($arg) { $this->arg = $arg; } public function run() { if ($this->arg) { $sleep = mt_rand(1, 10); printf('%s: %s -start -sleeps %d' . "\n", date("g:i:sa"), $this->arg, $sleep); sleep($sleep); printf('%s: %s -finish' . "\n", date("g:i:sa"), $this->arg); } } } // Create a array $stack = array(); //Initiate Multiple Thread foreach ( range("A", "D") as $i ) { $stack[] = new AsyncOperation($i); } // Start The Threads foreach ( $stack as $t ) { $t->start(); }Để chạy đoạn code trên thì mình chạy thử theo hình bên dưới nhé.
Bài này khá đơn giản, do mình đang chạy dự án nên không có viết chi tiết dc.
PS. Bạn nào gặp khó khăn gì về php và multithread có thể comment bên dưới để mình chỉnh sửa thêm nhé.
Sắp tới mình sẽ ra loạt bài về PHP multithreading, hi vọng được sự ủng hộ của các bạn.
Từ khóa » đa Luồng Trong Php
-
Pthreads - Đa Luồng Trong PHP. Tại Sao Không? - Viblo
-
Đa Luồng Trong Php - Viblo
-
Đa Luồng / Đa Tác Vụ Trong PHP - HelpEx
-
Cách Cài đặt Pthreads để Thử Code Multithreading Trong PHP.
-
Chủ đề: Threading Trong PHP - Diễn Đàn Tin Học
-
[PDF] Lập Trình đa Luồng Trong Php - 5pdf
-
Bộ Câu Hỏi Phỏng Vấn PHP Phần 5 - KungFu Tech
-
PHP Là đơn Luồng Hay đa Luồng? - Phỏng Vấn IT
-
Luồng Thực Thi (thread), Lập Trình đa Luồng (multithreading) | Tự Học ICT
-
Cách Thực Hiện đa Luồng - Multithreading Với Node.js - Techmaster
-
Đa Luồng (Multithread) Trong C++ - Học Lập Trình Web
-
Tin Tức - Viện Công Nghệ Thông Tin T3H
-
Đánh Giá điểm Mạnh Và điểm Yếu Của PHP - TopDev
-
Đa Luồng Trong Python | Lập Trình Từ Đầu