Tôi đang làm việc trên một ứng dụng web PHP và tôi cần thực hiện một số hoạt động mạng trong yêu cầu như tìm nạp ai đó từ máy chủ từ xa dựa trên yêu cầu của người dùng.Gọi hàm không đồng bộ trong PHP
Có thể mô phỏng hành vi không đồng bộ trong PHP do tôi phải chuyển một số dữ liệu vào một hàm và cũng cần đầu ra từ nó.
Mã của tôi cũng giống như:
<?php
$data1 = processGETandPOST();
$data2 = processGETandPOST();
$data3 = processGETandPOST();
$response1 = makeNetworkCall($data1);
$response2 = makeNetworkCall($data2);
$response3 = makeNetworkCall($data3);
processNetworkResponse($response1);
processNetworkResponse($response2);
processNetworkResponse($response3);
/*HTML and OTHER UI STUFF HERE*/
exit;
?>
Mỗi hoạt động mạng mất khoảng 5 giây để hoàn thành thêm tổng cộng 15 giây để thời gian phản hồi của ứng dụng của tôi cho tôi thực hiện 3 yêu cầu.
Hàm makeNetworkCall() chỉ cần thực hiện yêu cầu HTTP POST.
Máy chủ từ xa là API của bên thứ 3 nên tôi không có quyền kiểm soát ở đó.
PS: Vui lòng không trả lời đưa ra đề xuất về AJAX hoặc những thứ khác. Tôi hiện đang tìm kiếm nếu tôi có thể làm điều này thông qua PHP có thể được với một phần mở rộng C + + hoặc một cái gì đó như thế.
Hãy thử sử dụng 'CURL' để kích hoạt yêu cầu và tìm nạp một số dữ liệu từ web ... –
có thể trùng lặp [PHP luồng gọi đến hàm php không đồng bộ] (http://stackoverflow.com/questions/13846192/ php-threading-call-to-a-php-function-asynchronously) – CRABOLO
Bạn có thể sử dụng chức năng [stream_select] (https://secure.php.net/manual/en/function.stream-select.php) của PHP để chạy mã không chặn. [React] (http://reactphp.org/) sử dụng điều này để tạo ra một vòng lặp sự kiện tương tự như node.js (https://speakerdeck.com/igorw/react-phpnw). –