小编Pat*_*ick的帖子

PHP的阵列内存使用管理如何工作?

我试图找出PHP如何将数组加载到内存以及何时传递数组消耗内存.

所以我运行了一些代码:注意输入数组在这个例子中不太重要:

<?php

echo $this->getMemoryUsage();
$arr = $query->result_array(); // array of arrays from codeigniter
echo $this->getMemoryUsage();
Run Code Online (Sandbox Code Playgroud)

这会消耗的存储器恰好250 KB时,这意味着该数组的大小约250 KB,大致.

所以我运行了以下代码:

<?php

echo $this->getMemoryUsage();
$arr = $query->result_array(); // array of arrays from codeigniter

$arr[0]['id'] = 'changing this value';

$foo = $arr;
$foo[2]['id'] = 'changing this value again';

$bar = $foo;
$bar[4]['id'] = 'changing this value again and again';

$far = $bar;
$far[5]['id'] = 'changing this value again and again and again';

echo $this->getMemoryUsage();
Run Code Online (Sandbox Code Playgroud)

根据我读到并被告知,PHP实际上并不复制数组,它只引用原始数组,一旦做出更改,PHP就必须复制整个数组.

想象一下,当上面的代码消耗恰好500 kB的RAM时,我感到很惊讶.

谁能解释一下这里发生了什么? …

php memory

15
推荐指数
1
解决办法
286
查看次数

Typescript - 从生产中删除一些代码行

我试图从生产中删除一些只应出现在开发模式中的代码。
在使用 Webpack 之前我已经这样做过很多次了,如下所述

删除生产分发文件中的一些代码行?

这是我第一次尝试用打字稿做同样的事情 - 可以实现同样的目标吗?
我使用 Typescript 作为编译器(没有 webpack 或 rollup),并用它创建 ESM 捆绑包。

我需要其他工具来去除死代码吗?

作为参考,这是我试图从我的生产版本中删除的内容

if (process.env.NODE_ENV !== 'production') {
   console.log('Just a test');
}
Run Code Online (Sandbox Code Playgroud)

environment development-environment production-environment typescript

6
推荐指数
0
解决办法
1266
查看次数

phpunit与输出缓冲

我正在尝试将PHPunit集成到一个大项目中,一切似乎都很好,但似乎所有依赖ob_start()的方法都会导致风险测试.

在线阅读,似乎风险测试是执行测试方法未涵盖的代码的此类测试.但是,我根本没有使用@covers注释,而这只发生在ob_start()上.

所以有几个问题:

  1. 有可能解决这个问题吗?
  2. 在测试方面,ob_start是否存在固有的错误?
  3. 有办法吗?(如果不能解决它).

用例是使用返回视图的框架(而不是发送到浏览器),Codeigniter是一个经典示例,您可以在其中返回视图.返回视图取决于ob_start().非常感谢!

php testing phpunit output-buffering

5
推荐指数
1
解决办法
1602
查看次数

将UTF-8转换为ANSI(windows-1252)

我正在尝试将希伯来语中的字符串保存到文件中,同时使用ANSI编码的文件.所有的尝试都失败了我害怕.

  1. PHP文件本身是UTF-8.

所以这是我正在尝试的代码:

$to_file = "????? ?? ????";  
$to_file = mb_convert_encoding($to_file, "WINDOWS-1255", "UTF-8");  
file_put_contents(dirname(__FILE__) ."/txt/TESTING.txt",$to_file);      
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它返回false.

另一种尝试是:

$to_file = iconv("UTF-8", "windows-1252", $to_file);
Run Code Online (Sandbox Code Playgroud)

这将返回一个空字符串.虽然这不起作用,将outpout charset更改为windows-1255 DID工作.所以函数本身可以工作,但由于某种原因它不会转换为1252.

我在之前和之后运行此功能iconv并打印结果

mb_detect_encoding ($to_file);

iconv编码之前是UTF-8.
后的iconv编码是ASCII(??)

我真的很感激你能给予的任何帮助

php encoding utf-8 iconv windows-1252

3
推荐指数
1
解决办法
2万
查看次数

多个setTimeouts互相取消?

当我打多个setTimeouts时,我有一个问题,当他们一个接一个地快速解雇时,他们似乎互相取消了.

鉴于这个小提琴:http://jsfiddle.net/72M6L/.

这显示了这个非常简单的对象:

fadepopup = function (msg) 
{
    $elm = $('<div class="fadepopup"></div>');
    $elm.html('msg');
    $('body').append($elm);

    setTimeout(function () 
    {
        $elm.fadeOut(500, function () 
        {
            $(this).remove()
        });
    }, 1500);
}
Run Code Online (Sandbox Code Playgroud)

如果你按下按钮一次(在小提琴中),一切都很棒.
如果您快速按下按钮多次,则不会删除div.

为什么会发生这种情况,我该如何解决?

javascript jquery

1
推荐指数
1
解决办法
65
查看次数

使用 PHP 关闭或修复损坏的 img 标签

我在使用 PHP 修复“损坏”的 html 字符串时遇到了麻烦

我面临在 html 字符串上使用 substr 的常见问题,这会导致标签损坏。

我设法修复了所有损坏的标签,除了图像一个,因为标签本身并不完整,它甚至不是一个开始标签,

例如,假设您有一个字符串:

<div><img alt="foo" title="bar" 
Run Code Online (Sandbox Code Playgroud)

我真的很想添加一个>来关闭它,而我的其他脚本知道如何div自动关闭它。

有没有人对如何捕获损坏的<img>标签并自动修复它们有任何想法?

我见过很多解决方案,包括 DOMdocument、tidy 和 HTMLpurifier,但它们似乎没有解决这个特定问题。

任何帮助,将不胜感激。

html php tags

1
推荐指数
1
解决办法
1393
查看次数