在PHP中测试高达100MB的随机字符串的有效方法?

Mar*_*rko 4 php random

出于测试目的,我需要一个这样的函数:

/**
 *  @param int $sizeInBytes
 *
 * @returns string with random data
 */
function randomData($sizeInBytes)
{
 ...
}
Run Code Online (Sandbox Code Playgroud)

任何有效实施的想法?需要速度但不是真正的随机性(更像是一种"lorem ipsum").我最简单的想法是在文件系统中使用真正的大文件并通过流获取所需的大小.但这需要至少100MB的文件.有没有更好的办法?

edo*_*ian 9

如果你有可用的内存,那么只创建一个很长的字符串怎么样?

这不应该花那么长时间:)

 $x = str_repeat(
     'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sollicitudin turpis ut augue lacinia at ullamcorper dolor condimentum. Nunc elementum suscipit laoreet. Phasellus vel sem justo, a vulputate arcu. Sed rutrum elit nec elit lobortis ultrices. Quisque elit nulla, rutrum et varius sit amet, pulvinar eget purus. Aliquam erat volutpat. Fusce turpis lectus, vestibulum sed ornare sed, facilisis sit amet lacus. Nunc lobortis posuere ultricies. Phasellus aliquet cursus gravida. Curabitur eu erat ac augue rutrum mattis. Suspendisse sit amet urna nec velit commodo feugiat. Maecenas vulputate dictum diam, eu tempor erat volutpat in. Donec id nulla tortor, nec iaculis nibh. Pellentesque scelerisque nisl sit amet ligula dictum commodo. Donec porta mi in lorem porttitor id suscipit lacus auctor.', 
     125000
 );
Run Code Online (Sandbox Code Playgroud)

你当然可以把它写到一个文件中,但是在内存中创建它并不需要那么长时间.

上面的代码98MB在about中100ms生成一个200MB字符串,并170ms在我的框中创建一个字符串.对大多数情况来说,这应该足够好了.


如下面的注释中所述:如果限制脚本允许使用的内存量(或通过更改),则可能必须更改php.ini设置memory_limit('...');.字符串> 1.5gb也可能导致问题,但这不是我要说的问题.