为什么在初始页面加载时将此curl函数返回未定义的索引?

时间:2019-01-28 09:33:12

标签: php wordpress curl

我正在使用下面的函数来获取托管在Cloud中的图像的文件大小。 我需要在页面上显示此尺寸。 首次加载页面时,它会返回一个通知:未定义的索引:content-length。重新加载页面时,通知消失,页面显示良好。为什么会发生这种情况,我该怎么办?

$post_id = get_the_ID();
$post_thumbnail_id = get_post_thumbnail_id( $post_id );

//retrieve the size in bytes

$filePath = get_the_post_thumbnail_url($post_id, 'full');
  if (filter_var($filePath, FILTER_VALIDATE_URL)) {
    $ch = curl_init();
    $headers = [];
    curl_setopt($ch, CURLOPT_URL, $filePath);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // this function is called by curl for each header received
    curl_setopt($ch, CURLOPT_HEADERFUNCTION,
    function($curl, $header) use (&$headers)
     {   
     $len = strlen($header);
     $header = explode(':', $header, 2);
     if (count($header) < 2) // ignore invalid headers
     return $len;

      $name = strtolower(trim($header[0]));
      if (!array_key_exists($name, $headers))
        $headers[$name] = [trim($header[1])];
      else
        $headers[$name][] = trim($header[1]);

        return $len;
       }  
    );
 $data = curl_exec($ch);
}

//convert the size in bytes to MB
$filemb = $headers['content-length']['0'] / 1000 / 1000;
$filemb = round($filemb,2);

// do my stuff

1 个答案:

答案 0 :(得分:0)

除其他事项外,我还听取了04FS和Geoffrey的建议,并提出了另一种方法。我在WooCommerce中创建了一个自定义字段(文件大小),在创建产品时,我使用上面函数返回的值来设置该字段。

因此,我将其存储在自己的数据库中。因此,页面速度不会降低。我认为这对于带宽使用也将是有益的。

所以它只能被检索一次。

@ 04FS和@Geoffrey ....谢谢!

编辑:

它似乎根本不可靠。有时它是固定的,而有时则不是>必须弄清楚那个.....