当sleep和usleep功能被禁用时如何暂停php线程?

问题描述 投票:0回答:1

php 5.6 版本运行在虚拟主机上,因此 sleep 和 usleep 功能被禁用,我没有权限启用它们。 我必须将脚本挂起一段时间才能继续执行它。 到目前为止,我已经考虑使用curl或fsockopen函数来发送暂停脚本的请求。 但不知道有什么危害,如何精确控制请求时间,或者是否有这样的网站只在1-2秒内响应。 我想了一天,没有想出一个好办法,请大家帮帮我,真诚的谢谢。

php curl sleep fsockopen usleep
1个回答
0
投票

使用未知来源的网络请求

有多种方法可以使用 Web 请求来实现可预测的超时...因此下面的代码只是该做什么的“一个想法”。

    function curlSleep(
        $sleepSecs = 5,
        $url = 'www.ineverwillreachthis.lostinspace'
    ) {
        $startTime = microtime(true);
        $ch = curl_init($url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, $sleepSecs);

        try {
            $output = curl_exec($ch);
            $endTime = microtime(true);
            if (curl_errno($ch)) {
                echo "cURL error: " . curl_error($ch);
            } else {
                $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                if ($statusCode === 200) {
                    $duration = $endTime - $startTime;
                    echo "Response time: " . $duration . " seconds";
                } else {
                    echo "Server response error with status code: " . $statusCode;
                }
            }
        } catch (Throwable $e) {
        } finnaly {
            curl_close($ch);
        }
    }
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.