【发布时间】:2012-11-07 17:52:04
【问题描述】:
出于测试和学习的目的,我想修改https://github.com/php/php-src:ext/standard/rand.c中的php rand 和 mt_rand 函数。
我想在每次调用 rand 函数时给出一个固定的输出,为此我修改了代码
PHPAPI long php_rand(TSRMLS_D)
{
long ret;
if (!BG(rand_is_seeded)) {
php_srand(GENERATE_SEED() TSRMLS_CC);
}
#ifdef ZTS
ret = php_rand_r(&BG(rand_seed));
#else
# if defined(HAVE_RANDOM)
ret = random();
# elif defined(HAVE_LRAND48)
ret = lrand48();
# else
ret = rand();
# endif
#endif
// ignoring the results coming from the calls above and
// returning a constant value
ret = 3264;
return ret;
}
编译
./configure
make
make install
最后调用 rand 函数为echo rand(3000,4000);,它总是返回3000。
修改此功能的方法是什么?为什么有TSRMLS_D 而没有范围参数?
【问题讨论】:
-
这个问题不是 php 问题。
-
@Dagon 我错过了,感谢指正!
标签: c php-internals