说它奇怪是因为改了也是那样,照旧.
事情是这样的,因为要用sphinx搜索,设置完成后一切正常,然后开始搜,
却提示这个
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 775172097 bytes) in D:\WWW\phpcms\modules\search\classes\sphinxapi.class.php on line 637
然后改了php.ini中的memory_limit = 775172097M
这可够大了吧,但还是有这个提示,找到637行,
是这么写的while ( $left>0 && !feof($fp) )
{
$chunk = fread ( $fp, $left );
if ( $chunk )
{
$response .= $chunk;
$left -= strlen($chunk);
}
}
也看不出到底是哪出问题了
事情是这样的,因为要用sphinx搜索,设置完成后一切正常,然后开始搜,
却提示这个
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 775172097 bytes) in D:\WWW\phpcms\modules\search\classes\sphinxapi.class.php on line 637
然后改了php.ini中的memory_limit = 775172097M
这可够大了吧,但还是有这个提示,找到637行,
是这么写的while ( $left>0 && !feof($fp) )
{
$chunk = fread ( $fp, $left );
if ( $chunk )
{
$response .= $chunk;
$left -= strlen($chunk);
}
}
也看不出到底是哪出问题了
是说:在可用的内存 134217728 bytes(128M)中申请 775172097 bytes(约 739M)空间失败
显然是你的 sphinx 配置有问题
下面是配置代码
source main
{
type = mysql #数据库类型
sql_host = 127.0.0.1 #数据库ip
sql_user = root #数据库用户名
sql_pass = root #数据库密码
sql_db = phpcms #数据库名
sql_port = 3306 # 数据库端口
sql_query_pre = SET NAMES utf8
sql_query_pre = REPLACE INTO jh_sphinx_counter SELECT 1, MAX(searchid) FROM jh_search
sql_query = SELECT searchid, adddate, siteid, typeid, id, data FROM jh_search \
WHERE searchid>=$start AND searchid<=$end
sql_query_range = SELECT 1,max_doc_id FROM jh_sphinx_counter WHERE counter_id=1
sql_range_step = 5000
#字符串属性设置、需要过滤、排序的时候用到
sql_attr_uint = typeid
sql_attr_uint = siteid
sql_attr_uint = id
sql_attr_timestamp = adddate
sql_query_info = SELECT * FROM jh_search WHERE searchid=$id
}
source delta
{
type = mysql #数据库类型
sql_host = 127.0.0.1 #数据库ip
sql_user = root #数据库用户名
sql_pass = root #数据库密码
sql_db = phpcms #数据库名
sql_port = 3306 # 数据库端口
sql_query_pre = SET NAMES utf8
sql_query = SELECT searchid, adddate, siteid, typeid, id, data FROM jh_search \
WHERE searchid >( SELECT max_doc_id FROM jh_sphinx_counter WHERE counter_id=1 )
sql_query_post = REPLACE INTO jh_sphinx_counter SELECT 1, MAX(searchid) FROM jh_search
#字符串属性设置、需要过滤、排序的时候用到
sql_attr_uint = typeid
sql_attr_uint = siteid
sql_attr_uint = id
sql_attr_timestamp = adddate
sql_query_info = SELECT * FROM jh_search WHERE searchid=$id
}
#主索引
index main
{
source = main
# 放索引的目录
path = D:\sphinx\data\main
# 编码
charset_type = utf-8
# 指定utf-8的编码表
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
# 简单分词,只支持0和1,如果要搜索中文,请指定为1
ngram_len = 1
# 需要分词的字符,如果要搜索中文,去掉前面的注释
ngram_chars = U+3000..U+2FA1F
}
#增量索引
index delta
{
source = delta
path = D:\sphinx\data\delta
# 编码
charset_type = utf-8
# 指定utf-8的编码表
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
# 简单分词,只支持0和1,如果要搜索中文,请指定为1
ngram_len = 1
# 需要分词的字符,如果要搜索中文,去掉前面的注释
ngram_chars = U+3000..U+2FA1F
}
indexer
{
mem_limit = 500M
}
searchd
{
port = 9312
log = D:\sphinx\data\phpcms\searchd.log
query_log = D:\sphinx\data\phpcms\query.log
read_timeout = 5
max_children = 30
pid_file = D:\sphinx\data\phpcms\searchd.pid
max_matches = 2000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
}