错误500 ;End of script output before headers: index.php

生活当如此 2016-05-05 04:41:50
ThinkPHP框架,用curl爬取某网站用ajax生成的分页数据,脚本最大执行时间设置为0.运行脚本一段时间后浏览器显示错误500:,apache错误日志报错:End of script output before headers: index.php。 代码如下:

public function multi(){
$page = 128;//ajax的分页数
$max_size = 10;//并发数
//url数组
$url_arr = array();
//生成url数组
for($i = 1;$i <= $page; $i++){
$url = 'http://www.wdzj.com/front_select-plat?params=&sort=0&currPage=';
$url .= $i;
$url_arr[] = $url;
}
$mh = curl_multi_init();
//每次只放出$max_size大小的url用来初始化
$count = count($url_arr);
for($i=0;$i<$count;$i++){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url_arr[$i]);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_multi_add_handle($mh, $ch);
$requestMap[] = $ch;
if(count($requestMap)<$max_size && ++$i != $count) continue;//保证数组中每次有$max_size个请求且请求的url还没有用完
$active = null;
//执行批处理句柄
do{
$mrc = curl_multi_exec($mh, $active);
}while($mrc == CURLM_CALL_MULTI_PERFORM);
while($active && $mrc == CURLM_OK){
if(curl_multi_select($mh) != -1){
do{
$mrc = curl_multi_exec($mh, $active);
}while($mrc == CURLM_CALL_MULTI_PERFORM);
}
}

$json_arr = array();//存放ajax返回的接口数据
//获取资源并且关闭句柄
foreach($requestMap as $ch){
$json_arr[] = curl_multi_getcontent($ch);
// file_put_contents($i.'.txt', $json);
$error = curl_error($ch);
if($error != '') exit('发生了错误:'.$error);
curl_multi_remove_handle($mh, $ch);
}
unset($requestMap);
}
curl_multi_close($mh);
file_put_contents('1.txt', json_encode($json_arr));
}
...全文
3553 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
需要钱治病 2019-07-17
  • 打赏
  • 举报
回复
我也遇到了这个问题,如果是内存不足,应该是汇报内存不足的错误,请问你最后如何解决?
墨MOVE 2018-06-14
  • 打赏
  • 举报
回复
https://www.jianshu.com/p/857e664aef49 答案在这
朱俊的博客 2018-06-12
  • 打赏
  • 举报
回复
同样的问题,我就是下面的循环打印代码,本来会执行到十几分钟,但是每次到6分钟多一点就崩掉了,报500错误。apache查日志End of scriptoutput before headers <?php ini_set('display_errors','on'); error_reporting(E_ALL); ignore_user_abort(); set_time_limit(10000); $m = 15; $s = 10; $k = 0; while ($k < ($m*60+$s)){ file_put_contents('test3.log',floor($k/60).'分'.($k%60).'秒-',FILE_APPEND); if ($k%60 == 0) { echo 1; file_put_contents('test3.log',PHP_EOL,FILE_APPEND); } sleep(1); $k++; } exit();
weixin_40305702 2018-01-26
  • 打赏
  • 举报
回复
同遇到这样的问题,这个是什么原因引起的?
生活当如此 2016-05-06
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
系统内存 和 php 可用内存 不是一个概念 你就是个 500,神仙也不知道是怎么回事
额,是curl_multi_select()函数的问题,删掉那部分就可以了,不过照着参考文档上写的,都有问题,这我就不明白了。内存的不足的问题是在后面出现了,也解决了。多谢额。结贴
傲雪星枫 2016-05-05
  • 打赏
  • 举报
回复
开启错误提示

<?php
ini_set('display_errors','on');
error_reporting(E_ALL);
?>
一起混吧 2016-05-05
  • 打赏
  • 举报
回复
php.ini 中令display_errors=On 打开错误提示功能再说吧
xuzuning 2016-05-05
  • 打赏
  • 举报
回复
系统内存 和 php 可用内存 不是一个概念 你就是个 500,神仙也不知道是怎么回事
生活当如此 2016-05-05
  • 打赏
  • 举报
回复
引用 4 楼 qq2440620200 的回复:
[quote=引用 2 楼 xuzuning 的回复:] 从代码上看,最大的可能是内存不足
我也一直在看运行过程中的内存,一直没有超过百分之八十[/quote] 我再改下代码吧
生活当如此 2016-05-05
  • 打赏
  • 举报
回复
你好,平常没有怎么去接触错误显示的设置。照网上设置,重启apache后。再执行,还是那种错误。我附上apache的完整点的错误日志吧,不过自己看不明白。

[Thu May 05 17:08:52.673028 2016] [core:warn] [pid 20268:tid 320] AH00098: pid file D:/phpStudy/Apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Thu May 05 17:08:52.811036 2016] [mpm_winnt:notice] [pid 20268:tid 320] AH00455: Apache/2.4.10 (Win32) OpenSSL/1.0.1i mod_fcgid/2.3.9 configured -- resuming normal operations
[Thu May 05 17:08:52.811036 2016] [mpm_winnt:notice] [pid 20268:tid 320] AH00456: Apache Lounge VC9 Server built: Jul 19 2014 13:20:51
[Thu May 05 17:08:52.811036 2016] [core:notice] [pid 20268:tid 320] AH00094: Command line: 'D:\\phpStudy\\Apache\\bin\\httpd.exe -d D:/phpStudy/Apache'
[Thu May 05 17:08:52.814036 2016] [mpm_winnt:notice] [pid 20268:tid 320] AH00418: Parent: Created child process 21132
[Thu May 05 17:08:54.476131 2016] [mpm_winnt:notice] [pid 21132:tid 336] AH00354: Child: Starting 150 worker threads.
[Thu May 05 17:15:20.696222 2016] [core:error] [pid 21132:tid 1724] [client 127.0.0.1:60080] End of script output before headers: index.php
生活当如此 2016-05-05
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
从代码上看,最大的可能是内存不足
我也一直在看运行过程中的内存,一直没有超过百分之八十
xuzuning 2016-05-05
  • 打赏
  • 举报
回复
从代码上看,最大的可能是内存不足
xuzuning 2016-05-05
  • 打赏
  • 举报
回复
打开 php 的错误显示,500 多半是被错误信息憋死的
​ 博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌项目名称基于Web的酒店客房管理系统的设计与实现系统说明3.2.1  用户模块功能分析前台模块应主要包括用户登录模块、用户注册模块、查看客房信息模块、客房预定 模块、用户留言模块、充值模块和个人信息维护模块。用户登录模块:用户通过输入注册的的账号和密码,然后进行身份验证,匹配成功 后实现登录功能。用户注册模块:用户输入合法的账号和密码可以实现注册功能。 查看客房信息模块:用户可以通过首页查看客房的价格,图片,详情等信息,从而   可以选择想要预定的房间。 客房预定模块:用户选择自己想要预定的客房后,可以通过输入相关信息进行订房操作。用户留言模块:用户可以向管理员发送留言。 充值模块:用户可以通过添加银行卡再为自己进行充值操作。 个人信息维护模块:用户可以修改自己的姓名、密码、身份证号等信息,还可以查看自己的订单。3.2.2  管理员模块功能分析对于管理员而言,一个好的管理系统总是能让酒店的管理工作事半功倍[7]。管理员 能够通过这个系统对自己的酒店情况一目了然,应该包括客户留言模块、客房管理模 块、订房信息管理模块、入住信息管理模块、统计分析模块、酒店新闻管理模块、会 员信息管理模块、员工信息管理模块、系统用户管理模块、个人信息维护模块。客户留言模块:管理员可以查看并回复用户的留言。客房管理模块:管理员可以管理客房信息,可以添加新的客房,删除已经停用的客房信息,还可以修改现有的客房信息。订房信息管理模块:管理员可以处理用户的订房请求,为用户办理入住手续。入住信息管理模块:对于没有注册的线下客户,也可以办理入住手续。统计分析模块:可以对酒店所有的入住信息进行记录和总结分析。酒店新闻管理模块:管理员可以更新网站上的新闻公告,展示图片等信息。会员信息管理模块:管理员可以查看到所有的注册会员信息,可以对会员信息进行删除,修改,添加操作。员工信息管理模块:管理员可以查看到自己公司所有的员工信息,而且还可以对员工的相关信息进行管理。系统用户管理模块:管理员可以查看到所有的系统管理员信息并对管理员信息进行管理。个人信息维护模块:管理员可以更改自己的登录密码或者是姓名、性别、手机号等 相关个人信息。​编辑 环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本;6.是否Maven项目:否;技术栈1. 后端:Spring+SpringMVC+Mybatis2. 前端:JSP+CSS+JavaScript+jQuery使用说明1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;3. 将项目中springmvc-servlet.xml配置文件中的数据库配置改为自己的配置;4. 运行项目,在浏览器中输入http://localhost:8080/ 登录运行截图​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑​编辑 用户管理控制层:package com.houserss.controller;import javax.servlet.http.HttpSession;import org.apache.commons.lang3.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import com.houserss.common.Const;import com.houserss.common.Const.Role;import com.houserss.common.ServerResponse;import com.houserss.pojo.User;import com.houserss.service.IUserService;import com.houserss.service.impl.UserServiceImpl;import com.houserss.util.MD5Util;import com.houserss.util.TimeUtils;import com.houserss.vo.DeleteHouseVo;import com.houserss.vo.PageInfoVo;/** * Created by admin */@Controller@RequestMapping(/user/)public class UserController if (ip != null && ip.length() > 0) String[] ips = ip.split(,);for (int i = 0; i  

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧