Transport and HTTP Results in PHP Multi-cURL
Read per-handle transport results and destination status when evaluating PHP multi-cURL proxy requests.
“Finished” tells you a multi-cURL transfer has stopped. It does not tell you that the proxy login worked, that the destination returned the expected status, or that the body is usable.
Read each completed transfer from curl_multi_info_read(). Its result belongs to that handle. Keep it alongside the handle's selected proxy and destination.
| Evidence | What it answers |
|---|---|
| Per-transfer cURL result | Did the transfer complete at the transport/protocol level? |
| HTTP status | What response status did this exchange receive? |
| Expected response content | Did the application receive the resource it needed? |
These checks are related, but none replaces the others. A proxy can return an authentication challenge with a perfectly readable error body. A website can return a rejection after the tunnel has opened successfully.
A separate health check before the real transfer supplies older evidence about a different request. It cannot certify the next operation. Use the actual transfer's result for its outcome, and retain the earlier check only as additional context.