📄 php_mnogo.c
字号:
DLEXPORT PHP_FUNCTION(udm_alloc_agent){ switch(ZEND_NUM_ARGS()){ case 1: { pval **yydbaddr; char *dbaddr; UDM_ENV * Env; UDM_AGENT * Agent; if(zend_get_parameters_ex(1,&yydbaddr)==FAILURE){ RETURN_FALSE; } convert_to_string_ex(yydbaddr); dbaddr = Z_STRVAL_PP(yydbaddr); #if UDM_VERSION_ID >= 30204 Env=UdmEnvInit(NULL); UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7");#if UDM_VERSION_ID >= 30215 UdmSetLogLevel(NULL,0);#else UdmSetLogLevel(Env,0);#endif UdmOpenLog("mnoGoSearch-php",Env,0);#if UDM_VERSION_ID <= 30210 if(!memcmp(dbaddr,"searchd:",8)){ UDM_URL Url; UdmURLParse(&Url,dbaddr); UdmDBListAdd(&Env->sdcl,Url.hostinfo); } UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr); if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){ sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr);#if UDM_VERSION_ID <= 30207 Env->errcode=1;#endif php_error_docref(NULL TSRMLS_CC, E_WARNING,"Invalid DBAddr"); RETURN_FALSE; }#else UdmDBListAdd(&Env->dbl,dbaddr, UDM_OPEN_MODE_WRITE);#endif Agent=UdmAgentInit(NULL,Env,0);#elif UDM_VERSION_ID >= 30200 Env=UdmAllocEnv(); Env->vars=UdmAllocVarList(); Env->DBAddr=strdup(dbaddr); UdmEnvSetDBMode(Env,"single"); Agent=UdmAllocAgent(Env,0,UDM_OPEN_MODE_READ);#else Env=UdmAllocEnv(); UdmEnvSetDBAddr(Env,dbaddr); Agent=UdmAllocAgent(Env,0,UDM_OPEN_MODE_READ);#endif ZEND_REGISTER_RESOURCE(return_value,Agent,le_link); } break; case 2: { pval **yydbaddr; pval **yydbmode; char *dbaddr; char *dbmode; UDM_ENV * Env; UDM_AGENT * Agent; if(zend_get_parameters_ex(2,&yydbaddr,&yydbmode)==FAILURE){ RETURN_FALSE; } convert_to_string_ex(yydbaddr); convert_to_string_ex(yydbmode); dbaddr = Z_STRVAL_PP(yydbaddr); dbmode = Z_STRVAL_PP(yydbmode); #if UDM_VERSION_ID >= 30204 Env=UdmEnvInit(NULL); UdmVarListReplaceStr(&Env->Vars,"SyslogFacility","local7");#if UDM_VERSION_ID >= 30215 UdmSetLogLevel(NULL,0);#else UdmSetLogLevel(Env,0);#endif UdmOpenLog("mnoGoSearch-php",Env,0);#if UDM_VERSION_ID <= 30210 if(!memcmp(dbaddr,"searchd:",8)){ UDM_URL Url; UdmURLParse(&Url,dbaddr); UdmDBListAdd(&Env->sdcl,Url.hostinfo); } UdmVarListReplaceStr(&Env->Vars,"DBAddr",dbaddr); if(UDM_OK!=UdmDBSetAddr(Env->db,dbaddr,UDM_OPEN_MODE_READ)){ sprintf(Env->errstr,"Invalid DBAddr: '%s'",dbaddr);#if UDM_VERSION_ID <= 30207 Env->errcode=1;#endif php_error_docref(NULL TSRMLS_CC, E_WARNING,"Invalid DBAddr"); RETURN_FALSE; }#else UdmDBListAdd(&Env->dbl,dbaddr, UDM_OPEN_MODE_WRITE);#endif Agent=UdmAgentInit(NULL,Env,0);#elif UDM_VERSION_ID >= 30200 Env=UdmAllocEnv(); Env->vars=UdmAllocVarList(); Env->DBAddr=strdup(dbaddr); UdmEnvSetDBMode(Env,dbmode); Agent=UdmAllocAgent(Env,0,UDM_OPEN_MODE_READ);#else Env=UdmAllocEnv(); UdmEnvSetDBAddr(Env,dbaddr); UdmEnvSetDBMode(Env,dbmode); Agent=UdmAllocAgent(Env,0,UDM_OPEN_MODE_READ);#endif ZEND_REGISTER_RESOURCE(return_value,Agent,le_link); } break; default: WRONG_PARAM_COUNT; break; }}/* }}} *//* {{{ proto int udm_set_agent_param(int agent, int var, string val) Set mnoGoSearch agent session parameters */DLEXPORT PHP_FUNCTION(udm_set_agent_param){ pval **yyagent, **yyvar, **yyval; char *val; int var; UDM_AGENT * Agent; switch(ZEND_NUM_ARGS()){ case 3: if(zend_get_parameters_ex(3,&yyagent,&yyvar,&yyval)==FAILURE){ RETURN_FALSE; } convert_to_long_ex(yyvar); convert_to_string_ex(yyval); ZEND_FETCH_RESOURCE(Agent, UDM_AGENT *, yyagent, -1, "mnoGoSearch-agent", le_link); var = Z_LVAL_PP(yyvar); val = Z_STRVAL_PP(yyval); break; default: WRONG_PARAM_COUNT; break; } switch(var){ case UDM_PARAM_PAGE_SIZE: #if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"ps",val);#else Agent->page_size=atoi(val); if(Agent->page_size<1)Agent->page_size=20;#endif break; case UDM_PARAM_PAGE_NUM: #if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"np",val);#else Agent->page_number=atoi(val); if(Agent->page_number<0)Agent->page_number=0;#endif break; case UDM_PARAM_SEARCH_MODE: switch (atoi(val)){ case UDM_MODE_ALL:#if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"m","all");#else Agent->search_mode=UDM_MODE_ALL;#endif break; case UDM_MODE_ANY:#if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"m","any");#else Agent->search_mode=UDM_MODE_ANY;#endif break; case UDM_MODE_BOOL: #if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"m","bool");#else Agent->search_mode=UDM_MODE_BOOL;#endif break; case UDM_MODE_PHRASE: #if UDM_VERSION_ID >= 30200 php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown search mode"); RETURN_FALSE;#else Agent->search_mode=UDM_MODE_PHRASE;#endif break; default:#if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"m","all");#else Agent->search_mode=UDM_MODE_ALL;#endif php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown search mode"); RETURN_FALSE; break; } break; case UDM_PARAM_WORD_MATCH: switch (atoi(val)){ case UDM_MATCH_WORD: #if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"wm","wrd");#else Agent->word_match=UDM_MATCH_WORD;#endif break; case UDM_MATCH_BEGIN:#if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"wm","beg");#else Agent->word_match=UDM_MATCH_BEGIN;#endif break; case UDM_MATCH_END:#if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"wm","end");#else Agent->word_match=UDM_MATCH_END;#endif break; case UDM_MATCH_SUBSTR:#if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"wm","sub");#else Agent->word_match=UDM_MATCH_SUBSTR;#endif break; default:#if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"wm","wrd");#else Agent->word_match=UDM_MATCH_WORD;#endif php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown word match mode"); RETURN_FALSE; break; } break; case UDM_PARAM_CACHE_MODE: switch (atoi(val)){ case UDM_ENABLED:#if UDM_VERSION_ID < 30200 Agent->cache_mode=UDM_ENABLED;#elif UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"Cache","yes");#else UdmReplaceStrVar(Agent->Conf->vars,"Cache","yes",UDM_VARSRC_GLOBAL);#endif break; case UDM_DISABLED:#if UDM_VERSION_ID < 30200 Agent->cache_mode=UDM_DISABLED;#elif UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"Cache","no");#else UdmReplaceStrVar(Agent->Conf->vars,"Cache","no",UDM_VARSRC_GLOBAL);#endif break; default:#if UDM_VERSION_ID < 30200 Agent->cache_mode=UDM_DISABLED;#elif UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"Cache","no");#else UdmReplaceStrVar(Agent->Conf->vars,"Cache","no",UDM_VARSRC_GLOBAL);#endif php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown cache mode"); RETURN_FALSE; break; } break; case UDM_PARAM_TRACK_MODE: switch (atoi(val)){ case UDM_ENABLED:#if UDM_VERSION_ID < 30200 Agent->track_mode|=UDM_TRACK_QUERIES;#elif UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"TrackQuery","yes");#else UdmReplaceStrVar(Agent->Conf->vars,"TrackQuery","yes",UDM_VARSRC_GLOBAL);#endif break; case UDM_DISABLED:#if UDM_VERSION_ID < 30200 Agent->track_mode &= ~(UDM_TRACK_QUERIES); #elif UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"TrackQuery","no");#else UdmReplaceStrVar(Agent->Conf->vars,"TrackQuery","no",UDM_VARSRC_GLOBAL);#endif break; default:#if UDM_VERSION_ID < 30200 Agent->track_mode &= ~(UDM_TRACK_QUERIES); #elif UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"TrackQuery","no");#else UdmReplaceStrVar(Agent->Conf->vars,"TrackQuery","no",UDM_VARSRC_GLOBAL);#endif php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown track mode"); RETURN_FALSE; break; } break; case UDM_PARAM_PHRASE_MODE: #if UDM_VERSION_ID < 30200 switch (atoi(val)){ case UDM_ENABLED: Agent->Conf->use_phrases=UDM_ENABLED; break; case UDM_DISABLED: Agent->Conf->use_phrases=UDM_DISABLED; break; default: php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown phrase mode"); RETURN_FALSE; break; }#endif break; case UDM_PARAM_ISPELL_PREFIXES: switch (atoi(val)){ case UDM_ENABLED:#if UDM_VERSION_ID < 30200 Agent->Conf->ispell_mode |= UDM_ISPELL_USE_PREFIXES;#elif UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"IspellUsePrefixes","1");#else UdmAddIntVar(Agent->Conf->vars, "IspellUsePrefixes", 1, UDM_VARSRC_GLOBAL);#endif break; case UDM_DISABLED:#if UDM_VERSION_ID < 30200 Agent->Conf->ispell_mode &= ~UDM_ISPELL_USE_PREFIXES;#elif UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"IspellUsePrefixes","0");#else UdmAddIntVar(Agent->Conf->vars, "IspellUsePrefixes", 0, UDM_VARSRC_GLOBAL);#endif break; default:#if UDM_VERSION_ID < 30200 Agent->Conf->ispell_mode |= UDM_ISPELL_USE_PREFIXES;#elif UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"IspellUsePrefixes","0");#else UdmAddIntVar(Agent->Conf->vars, "IspellUsePrefixes", 1, UDM_VARSRC_GLOBAL); #endif php_error_docref(NULL TSRMLS_CC, E_WARNING,"Unknown ispell prefixes mode"); RETURN_FALSE; break; } break; case UDM_PARAM_CHARSET: case UDM_PARAM_LOCAL_CHARSET:#if UDM_VERSION_ID < 30200 Agent->Conf->local_charset=UdmGetCharset(val); Agent->charset=Agent->Conf->local_charset;#elif UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"LocalCharset",val); { const char * charset=UdmVarListFindStr(&Agent->Conf->Vars,"LocalCharset","iso-8859-1"); Agent->Conf->lcs=UdmGetCharSet(charset); }#else Agent->Conf->local_charset=strdup(val); UdmReplaceStrVar(Agent->Conf->vars,"LocalCharset",val,UDM_VARSRC_GLOBAL);#endif break; #if UDM_VERSION_ID >= 30200 case UDM_PARAM_BROWSER_CHARSET:#if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"BrowserCharset",val); { const char * charset=UdmVarListFindStr(&Agent->Conf->Vars,"BrowserCharset","iso-8859-1"); Agent->Conf->bcs=UdmGetCharSet(charset); }#else Agent->Conf->browser_charset=strdup(val); UdmReplaceStrVar(Agent->Conf->vars,"BrowserCharset",val,UDM_VARSRC_GLOBAL);#endif break; case UDM_PARAM_HLBEG:#if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"HlBeg",val);#else UdmReplaceStrVar(Agent->Conf->vars,"HlBeg",val,UDM_VARSRC_GLOBAL);#endif break; case UDM_PARAM_HLEND:#if UDM_VERSION_ID >= 30204 UdmVarListReplaceStr(&Agent->Conf->Vars,"HlEnd",val);#else UdmReplaceStrVar(Agent->Conf->vars,"HlEnd",val,UDM_VARSRC_GLOBAL);#endif break; case UDM_PARAM_SYNONYM: if (UdmSynonymListLoad(Agent->Conf,val)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s",Agent->Conf->errstr); RETURN_FALSE;#if UDM_VERSION_ID >= 30204
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -