对于我的项目之一,我需要导入一个非常大的文本文件(~950MB).我正在为我的项目使用Symfony2和Doctrine 2.
我的问题是我得到的错误如下:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 24 bytes)
Run Code Online (Sandbox Code Playgroud)
如果我将内存限制增加到1GB,甚至会出现错误.
我试图通过使用XDebug和KCacheGrind(作为PHPEdit的一部分)来分析问题,但我真的不明白这些值:(
我正在寻找一种工具或方法(Quick and Simple,因为我没有太多时间)来找出为什么分配内存而不是再次释放.
编辑
要清除这里的一些内容,我的代码是:
$handle = fopen($geonameBasePath . 'allCountries.txt','r');
$i = 0;
$batchSize = 100;
if($handle) {
while (($buffer = fgets($handle,16384)) !== false) {
if( $buffer[0] == '#') //skip comments
continue;
//split parts
$parts = explode("\t",$buffer);
if( $parts[6] != 'P')
continue;
if( $i%$batchSize == 0 ) {
echo 'Flush & Clear' . PHP_EOL;
$em->flush();
$em->clear();
}
$entity = $em->getRepository('MyApplicationBundle:City')->findOneByGeonameId( $parts[0] …Run Code Online (Sandbox Code Playgroud) 我正在尝试让 NetBeans 的 php 调试器在 Ubuntu 中工作。当我尝试启动调试会话时,它会一直尝试建立连接,但最终它给我一条错误消息,说没有与 netbeans-xdebug 的连接可用。我已经安装了 php5-xdebug,但是当我尝试使用 phpinfo() 查看它时,它没有显示。我的 php/apache2/php.ini 有以下几行代码:
zend_extension=/usr/lib/php5/20090626/xdebug.so
[debug]
; Remote settings
xdebug.remote_autostart=off
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey="netbeans-xdebug"
; General
xdebug.auto_trace=off
xdebug.collect_includes=on
xdebug.collect_params=off
xdebug.collect_return=off
xdebug.default_enable=on
xdebug.extended_info=1
xdebug.manual_url=http://www.php.net
xdebug.show_local_vars=0
xdebug.show_mem_delta=0
xdebug.max_nesting_level=100
;xdebug.idekey=
; Trace options
xdebug.trace_format=0
xdebug.trace_output_dir=/tmp
xdebug.trace_options=0
xdebug.trace_output_name=crc32
; Profiling
xdebug.profiler_append=0
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=0
xdebug.profiler_output_dir=/tmp
xdebug.profiler_output_name=crc32
Run Code Online (Sandbox Code Playgroud)
如您所见,我曾尝试自己解决它,但我无法让它发挥作用。任何帮助将不胜感激...
到目前为止,我已经使用了 Eclipse 的 Xdebug 3 个月。它运行得非常好。
但是,我遇到了一个 Xdebug 问题,即“DBGp 响应错误:eval:=206 msg:error 评估代码”(在错误日志中)。
在我调查错误后,我发现问题是:
206 - 评估代码时出错(从 eval() 中使用(或使用 property_get 获取全名))”
这是来自http://xdebug.org/docs-dbgp.php 的参考
我为这个问题花了 2 天时间,没有任何改变。
请帮我解决这个问题。非常感谢并非常感谢您的帮助。
尝试使用Netbeans上的Xdebug(在Windows 8上)调试卷曲请求时,我遇到了一个奇怪的问题.这是我的代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
if ( curl_errno($ch) ) {
$result = 'ERROR -> ' . curl_errno($ch) . ': ' . curl_error($ch);
echo $result;
}
print "\n response = \n";
var_dump($response);
// close cURL resource, and free up system resources
curl_close($ch);
die;
Run Code Online (Sandbox Code Playgroud)
当我使用Netbeans进行调试时,我得到:
ERROR -> 28: Operation timed out after 10015 milliseconds with 0 out of -1 bytes receivedresponse = bool(false)
Run Code Online (Sandbox Code Playgroud)
当我在没有调试的情况下运行时,我没有得到错误和xampp页面的响应.
在php.ini我有:
[XDebug]
zend_extension …Run Code Online (Sandbox Code Playgroud) 我有一个带有cPanel WHM的VPS,我正在尝试启用XDebug.我通过转到安装了扩展程序,WHM -> Software -> Module Installers -> PHP Pecl -> Manage并通过检查我的phpinfo()页面确认已安装.
下一步是在我的php.ini文件中启用XDebug,但是我有点困惑我应该怎么做.
看看php.ini /usr/local/lib,我在底部看到这一行:
zend_extension="/usr/local/Zend/lib/Guard-6.0.0/php-5.4.x/ZendGuardLoader.so"
Run Code Online (Sandbox Code Playgroud)
但是,在WHM - >服务配置 - > PHP配置编辑器中,有一个带有此值的"zend_extension"选项:
/usr/local/IonCube/ioncube_loader_lin_5.4.so, /usr/local/Zend/lib/Guard-6.0.0/php-5.4.x/ZendGuardLoader.so
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,我应该如何添加XDebug的路径:
/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
Run Code Online (Sandbox Code Playgroud)
到php.ini?我看到三种方法,我不知道哪种方法是正确的:
哪种方式是正确的?
我最近在Docker社区上阅读了很多关于如何使用Docker for Mac在PHPStorm中调试PHP应用程序的帖子.所有这些都包含有用的信息,但没有在一个地方看到工作解决方案.
我在我的Sublime 3上安装了Xdebug软件包.调试工作正常,但是我无法摆脱底部的Xdebug面板......
按Esc什么也没做.当我有"查找"面板选择时,只需按Esc就会消失,但它不适用于Xdebug面板,任何帮助?
我在这里找到了这个Sublime Text 3 - Xdebug Context面板,但它还没有任何答案......
有没有人成功配置VSCode来调试基于Laravel的网站?在阅读了无数文章和教程之后,我已经达到可以让VSCode“收听XDEBUG”的地步,但是我无法进行常规的 VS风格的调试,只能按F5来启动当前版本。在我最喜欢的浏览器中访问该网站,就像遇到完整的Visual Studio或Eclipse一样,当它遇到断点时,它会闯入VSCode。
我在机器上正确设置了以下内容:
我不确定我需要在哪种启动配置中使用launch.json。PHP Debug扩展附带的两个配置如下所示:
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
Run Code Online (Sandbox Code Playgroud)
第一种配置正常工作时(我可以在VSCode中以该模式启动调试,然后在浏览器中单独启动我的网站,并遇到断点),第二种配置失败。它告诉我无法找到Controller类(这是Laravel框架类)。用名称空间来限定类名也没有用。
我的猜测是,这与启动配置的设置有关。它尝试将活动脚本作为独立的单元启动,因此无法找到位于不同文件中的框架类的定义。我们必须以某种方式提供将网站作为单个应用程序启动的功能。
有人成功做到了,告诉我我在这里缺少什么吗?
我在PHP 7.3上安装了Xdebug pecl install xdebug
当我将这些设置添加到/etc/php/7.3/apache2/php.ini并重新加载apache时,页面失败并且没有数据发送到服务器.
xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1
zend_extension="/usr/lib/php/20180731/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.halt_level=E_WARNING|E_NOTICE|E_USER_WARNING|E_USER_NOTICE
xdebug.scream=1
Run Code Online (Sandbox Code Playgroud)
不知道为什么它不起作用.
我上运行的测试PHPUnit使用Xdebug,用于生成覆盖率,这是非常缓慢的。
我尝试使用,PHPdbg但这会导致内存错误。
有人告诉我可以创建一个过滤器文件,这会有所帮助。谁能告诉我这将如何工作。
xdebug ×10
php ×8
netbeans ×2
curl ×1
docker ×1
doctrine-orm ×1
eclipse ×1
kcachegrind ×1
laravel ×1
phpunit ×1
ssh-tunnel ×1
sublimetext3 ×1
symfony ×1
ubuntu ×1