我收到成千上万个如下所示的错误日志:
$xml = "<
requisicao-boleto>
<
website>
<
n_website>
{$n_website}<
/n_website>
<
password>
{$password}<
/password>
<
/website>
<
sacado>
<
name>
{$name}<
/name>
{$user_code}
<
address>
<
street>
{$street}<
/street>
<
complement>
{$complement}<
/complement>
<
number>
{$number}<
/number>
<
district>
{$district}<
/district>
<
state_province>
{$state_province}<
/state_province>
<
city>
{$city}<
/city>
<
postcode>
{$postcode}<
/postcode>
<
country>
{$country}<
/country>
<
/address>
<
/sacado>
<
dados_boleto>
<
product>
{$product}<
/product>
<
reference>
{$uid}<
/reference>
<
value>
{$value}<
/value>
<
/dados_boleto>
<
/requisicao-boleto>
";
$xml = preg_replace('/\s(?=\s)/', '', $xml);
$xml = "xml=" . $xml;
$n = strlen($xml);
$opts = array(
'http' =>
array(
'method' =>
"POST", 'header' =>
"User-Agent: My Own Http Client\r\n" .
"Content-length: " . $n . "\r\n", 'content' =>
$xml
)
);
$context = stream_context_create($opts);
$handle = fopen($URL, 'r', false, $context);
$conteudo = '';
while (!feof($handle)) {
$conteudo .= fread($handle, 1024);
}
代码是:
while (!feof($handle)) {
$conteudo .= fread($handle, 1024);
}
有没有人遇到过类似的问题, 并且知道如何克服这个问题?
在尝试实施已经给出的建议时, 我已经用完整的代码更新了这个问题。
#1你检查过fopen是否有效吗?
$handle = fopen($URL, 'r', false, $context);
if ( $handle === FALSE ) {
echo 'Cannot open this url ' . $URL;
exit;
}
#2查看fopen文档
成功返回文件指针资源, 错误返回FALSE。【feof()期望参数1为资源】我认为在你的情况下, fopen返回false, feof也返回false。这就是为什么你会陷入无限循环。
以下是feof文档的报价
如果文件指针位于EOF或发生错误(包括套接字超时), 则返回TRUE。否则返回FALSE。你的示例如下所示
php >
var_dump(feof(false));
PHP Warning:feof() expects parameter 1 to be resource, boolean given in php shell code on line 1
PHP Stack trace:
PHP1. {main}() php shell code:0
PHP2. feof() php shell code:1
bool(false)
php >
在执行其他任何操作之前, 你需要检查$ handle是否是资源。
推荐阅读
- 通过审核过滤wordpress评论
- 致命错误(调用未定义的函数wp_get_theme())
- 精美的URL结构,条件内容和搜索-使用CPT,自定义字段和分类
- 从主循环wordpress中排除自定义帖子类型
- 使用MAMP和WordPress NIGHTMARE进行测试站点的Dreamweaver CS6站点设置
- 有人知道如何在WordPress中将元框模板选择添加到自定义帖子类型吗()
- 在post-wordpress主题中显示特色图片
- Scala 模式匹配详解
- Ubuntu下开启/关闭防火墙及端口#私藏项目实操分享#