当前位置: 首页 > 知识库问答 >
问题:

fopen正在阻止wordpress,即使我将其设置为非阻止。是我的服务器故障吗?

东方化
2023-03-14

我对禁用cUrl的服务器上的wordpress WP_Cron有问题,基本上调用Cron会阻止服务器,我想知道为什么会发生这种情况,以及它是否与我的Web服务器的某些配置有关。

这是密码

    $arrContext = array('http' =>
        array(
            'method' => strtoupper($r['method']),
            'user_agent' => $r['user-agent'],
            'max_redirects' => $r['redirection'] + 1, // See #11557
            'protocol_version' => (float) $r['httpversion'],
            'header' => $strHeaders,
            'ignore_errors' => true, // Return non-200 requests.
            'timeout' => $r['timeout'],// here i have 10
            'ssl' => array(
                    'verify_peer' => $ssl_verify,
                    'verify_host' => $ssl_verify
            )
        )
    );

    $proxy = new WP_HTTP_Proxy();

    if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) {
        $arrContext['http']['proxy'] = 'tcp://' . $proxy->host() . ':' . $proxy->port();
        $arrContext['http']['request_fulluri'] = true;

        // We only support Basic authentication so this will only work if that is what your proxy supports.
        if ( $proxy->use_authentication() )
            $arrContext['html" target="_blank">http']['header'] .= $proxy->authentication_header() . "\r\n";
    }

    if ( ! empty($r['body'] ) )
        $arrContext['http']['content'] = $r['body'];

    $context = stream_context_create($arrContext);

    if ( !WP_DEBUG )
        $handle = @fopen($url, 'r', false, $context);
    else
        $handle = fopen($url, 'r', false, $context);
            error_log('after');
    if ( ! $handle )
        return new WP_Error('http_request_failed', sprintf(__('Could not open handle for fopen() to %s'), $url));

    $timeout = (int) floor( $r['timeout'] );
    $utimeout = $timeout == $r['timeout'] ? 0 : 1000000 * $r['timeout'] % 1000000;
    stream_set_timeout( $handle, $timeout, $utimeout );

    if ( ! $r['blocking'] ) {
        stream_set_blocking($handle, 0);
        fclose($handle);
        return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
    }

如果我设置了一个超时10错误日志是永远不会打印的调用到wp_cron和得到这个错误

PHP警告:fopen(http://localhost/wordpress/wp-cron.php?doing_wp_cron=1350494198.1313750743865966796875)[function.fopen]:打开流失败:HTTP请求失败!在C:\Program Files(x86)\Zend\Apache2\htdocs\wordpress\wp-包含\class-http.php行925

是不是我的服务器上的某个配置导致了这种情况?我认为调用fopen()并不意味着等待资源响应,对吗?

共有1个答案

茅炯
2023-03-14

默认情况下,超时非常非常短(大约0.01秒),因为有时请求会失败,基本上,wp_cron可以下次再试一次。你似乎把它改成了一个很长的间隔,它就这样引人注目。看看这个Trac线程。如果你有定义('WP_DEBUG',true);你会一直看到这个。我想你可能不担心什么重要的事情。它实际上是在制造麻烦吗?对我自己来说,我从来没有因为它而注意到一个问题。

 类似资料:
  • 所以我已经实现了一个Spring引导JAVA应用程序作为服务器和角作为前端。所以实际上,当我在本地运行这些时,一切都很好。 但是当我为两者构建Docker映像并尝试将它们作为容器进行测试时,我面临着CORS错误。 由于我使用JWT令牌作为安全性,我已经禁用了crsf和默认的Spring Security令牌。所以在这里您可以看到CORS的JAVA配置; 这就是nginx。形态 即使我尝试在同一网络

  • 问题内容: 我对Go如何处理非阻塞IO感到困惑。API在我看来基本上是同步的,并且在Go上观看演示时,听到诸如“和调用块”之类的注释并不罕见。 从文件或网络读取时,Go是否使用阻塞IO?还是当在Go Routine中使用某种魔术来重写代码? 来自C#背景,这感觉非常不直观,在C#中,当使用异步API时我们使用了关键字。这清楚地表明,API可以产生当前线程,并在以后的延续中继续。 因此,TLDR;当

  • 我无法停止/消除我的不和。js机器人(nodejs-npm)。 并尝试命令:npm stop https://pastebin.com/v41PxTcN

  • 问题内容: Ajax使用回调,因为它是同步的。 我希望对远程URL块的调用直到出现一些答案为止 ,就像在Ajax中一样,但是没有异步部分,或者我要说要进行JAX调用。 是否有任何技术可以使以下事情发生(使用JQuery)(…使用JQuery或其他解决方案): 我只是想知道-想学习。 实际上,有时会阻塞直到回复合适为止。我并不是说要浏览器阻止,而只是脚本运行时。 问题答案: 您可以在使用jQuery

  • 但我怎么才能阻止码头服务器呢?我听说了一些关于stop.jar和start.jar的事情。我能在哪里找到它?它集成在Jetty-all-jar中吗?

  • 问题内容: 知道如何防止对node.js应用程序进行XSS攻击吗?在那里处理删除href,onclick属性等中的javascript的任何库。从发布的数据? 我不想为所有这些写正则表达式:) 有什么建议? 问题答案: 建议从GoogleCaja借用JS中基于白名单的JS中的HTML清理器,据我快速浏览可知,该实现器不依赖HTML来实现HTML SAX解析器。浏览器的DOM。 更新: 另外,请记住