【问题标题】:fetch images from url via CURL crashes on some URLs通过 CURL 从 url 获取图像在某些 URL 上崩溃
【发布时间】:2012-10-17 20:25:23
【问题描述】:

我试图使用这里给出的脚本php get all the images from url which width and height >=200 more quicker

我下载并使用了http://sourceforge.net/projects/simplehtmldom/这里给出的simple_html_dom.php

它适用于大多数网址,但当我使用 http://www1.macys.com/shop/mens-clothing/mens-athletic-wear?id=59165&edge=hybrid&cm_sp=us_men%27s-men%27s-apparel-activewear-_-t-shirts#!fn=APPAREL_TYPE%3DT-Shirts%26sortBy%3DORIGINAL%26productsPerPage%3D40&!qvp=iqvp 之类的东西时

脚本只是崩溃了。有人可以帮忙吗?

编辑: 我放了错误报告,它给出了这个。

致命错误:在第 16 行的 /var/www/smartbiz/smartbiz/test2.php 中的非对象上调用成员函数 find()

第 16 行:if ($html->find ( 'img' )) {

EDIT2:不确定这是否相关PHP simple html dom: apache crashesPHP simple html dom: apache crashes

【问题讨论】:

  • 如果是“调用非对象函数”的错误,那么显然你需要在if ($html->find ( 'img' )) 行之前检查$html 的内容。但我认为还有更多错误,可能是最大内容大小。这是调试的问题,而不是问一个问题。
  • 您需要弄清楚究竟是什么错误。我遇到过页面太大而导致内存限制的情况。检查网络服务器日志以查看确切的错误。

标签: php image curl


【解决方案1】:

您可以将代码包装在 try-catch 语句中。

<?
try{

   // Your image checking code..

}catch( Exception $e ){
   echo "Image not found: $e";
}
?>

听起来错误是没有加载 HTML。我们需要更多你的代码,否则我只能给你基本的调试建议。

  1. 将“失败”的链接复制并粘贴到浏览器中,并检查它是否正常工作。
  2. 尝试以另一种方式将 HTML 加载到 Simple HTML DOM 中。
  3. 如果这些都不起作用,请转储 $html 变量以查看发生了什么。
  4. 如果循环对某些人有效,而对其他人无效,有什么不同? URL 结构、字符编码是否存在/缺失?

尝试以另一种方式放置 HTML。

$html = str_get_html( file_get_contents( $YOUR_URL ) );

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    相关资源
    最近更新 更多