• 关于 win32 api使用 的搜索结果

回答

不考虑跨平台的话,可以使用win32 API: GetModuleFileName()参考:http://www.cnblogs.com/zjutlitao/p/3593095.html

muji318 2019-12-02 02:34:54 0 浏览量 回答数 0

回答

API(Application Programming Interface,应用程序编程接口)是一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数.用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么. 这在某种程度上很象Windows的天然代码.其他的语言只是提供一种能自动而且更容易的访问API的方法.VB在这方面作了很多工作.它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法. 这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows.例如,Form1.Print...VB 将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数. 。同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Button_Click). API函数包含在Windows系统目录下的动态连接库文件中(如User32.dll,GDI32.dll,Shell32.dll...). API 声明 正如在"什么是API"中所说,API函数包含在位于系统目录下的DLL文件中.你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用API Text Viewer. 要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32api.txt(或.MDB如果你已经把它转换成了数据库的话,这样可以加快速度.注:微软的这个文件有很多的不足,你可以试一下本站提供下载的api32.txt),选择"声明",找到所需函数,点击"添加(Add)"并"复制(Copy)",然后粘贴(Paste)到你的工程里.使用预定义的常量和类型也是同样的方法. 你将会遇到一些问题: 假设你想在你的窗体模块中声明一个函数.粘贴然后运行,VB会告诉你:编译错误...Declare 语句不允许作为类或对象模块中的 Public 成员...看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(如 Private Declare Function...).--不要忘了,可是这将使该函数只在该窗体模块可用. 在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数.常量或其他的什么东西共用了一个名称.由于绝大多数的函数(也可能是全部,我没有验证过)都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行. API 分为四种类型: 远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。 标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。 文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。 信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。 当前应用于 API 的标准包括 ANSI 标准 SQL API。另外还有一些应用于其它类型的标准尚在制定之中。API 可以应用于所有计算机平台和操作系统。这些 API 以不同的格式连接数据(如共享数据缓存器、数据库结构、文件框架)。每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误。因此,除了具备执行数据共享任务所需的知识以外,这些类型的 API 还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。相反由于这种 API 只处理一种信息格式,所以该情形下的信息交付 API 只提供较小的命令、网络参数以及差错条件子集。正因为如此,交付 API 方式大大降低了系统复杂性,所以当应用程序需要通过多个平台实现数据共享时,采用信息交付 API 类型是比较理想的选择。 API 与图形用户接口(GUI)或命令接口有着鲜明的差别: API 接口属于一种操作系统或程序接口,而后两者都属于直接用户接口。 有时公司会将 API 作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等操作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式 API。 da'an'lai'yu'na'w'n答案来源网络,供您参考

问问小秘 2019-12-02 02:13:03 0 浏览量 回答数 0

问题

是否有用于在Azure中使用python编程将doc文件转换为docx格式的软件包?

is大龙 2020-03-24 17:55:25 1 浏览量 回答数 1

新用户福利专场,云服务器ECS低至102元/年

新用户专场,1核2G 102元/年起,2核4G 699.8元/年起

问题

在python 3中使用win32api / com模块时,有没有办法解决unicode问题?

一码平川MACHEL 2019-12-01 19:31:56 767 浏览量 回答数 1

问题

Java 使用 Jacob 调用 COM 接口大漠插件 dm.dll 报错?报错

爱吃鱼的程序员 2020-06-07 22:17:51 0 浏览量 回答数 1

问题

如何得知用户最后一次按下键(或移动鼠标)的时间?

游客ufivfoddcd53c 2020-01-03 18:46:44 0 浏览量 回答数 1

问题

关于Dll操作的小结(有疑问)?报错

爱吃鱼的程序员 2020-06-14 16:51:57 0 浏览量 回答数 1

问题

关于Eclipse第一次编译c++小程序出现错误的问题

爵霸 2019-12-01 19:49:44 1200 浏览量 回答数 1

回答

第一个一般用于防止头文件重复引用。字面意思是如果没有定义xxx,那么定义xxx 也就是说第一遍执行这一段的时候会定义xxx宏,第二次执行相同语句的话因为刚才已经定义过了,就无法满足ifndef自然不会执行块内语句。 用法如下 #ifndef ABC_H //如果已经定义了ABC_H到这里就会引发判断,就不会编译下面的代码 #define ABC_H //如果从未定义过,我们就定义,这两个结合使用可以保证被包含的内容只被编译器执行一次 //头文件内容 #endif 第二个一般用于屏蔽语句。其实你吧define那句去掉了再看的话意思就是如果定义了states下面的语句就有效,否则救无效 比如我们经常用这样的方式去注释代码 #if 0 //无用的代码 #endif 换过来,如果用#if 1的话就是代表这段代码有效了。 通过这种方式,你就可以通过编译时定义不同的宏的方式来让不同代码生效了 再举个例子:跨平台的c语言代码常有这样的片段 全选复制放进笔记#ifdef LINUX_KERNEL //linux下的api #endif #ifdef WIN32 //windows下的api #endif

a123456678 2019-12-02 02:35:16 0 浏览量 回答数 0

回答

MSMQ(Microsoft消息队列)可能是一个不错的选择。它是操作系统的一部分,并且是一个可选组件(可以通过“添加/删除程序” /“ Windows组件”安装),这意味着它是免费的(当然,只要您已经为Windows付费)。MSMQ提供Win32 / COM和System.Messaging API。更现代的Windows Communication Foundation(又名Indigo)排队通道也使用MSMQ。请注意,Windows的Home SKU(XP Home和Vista Home)不支持MSMQ。

游客ufivfoddcd53c 2020-01-03 16:05:37 0 浏览量 回答数 0

回答

VC6都已经是上个世纪98年的产品,明显是你接手的东西,做这个东西的人已经老了,跟不上时代发展嘛 宏哥早就说过 win32才是你应该依赖的东西,win32api才是真正的设计,真正的精髓 什么狗屁MFC,都是垃圾这不是菜鸟么???你还不配吐槽 你这明显的没经验啊,人家VC6的工程,既然你想用人家的,你就应该在XP+VC6的机器上调,你倒是好先在win7上折腾半天VC6,然后又跑到vm下去折腾,至于说什么微软不提供SDK了,自己网上找啊,这很早的东西自然官方就不提供,或许提供但是你没找到连接,比如php3的源码,php官方网站我找半天就没有,只有google了,也许什么地方应该还有人保留着,对别人遗留的老代码,你应该想象下当时的环境,也许还是win98+vc6搞的呢, VC6还是挺不错的,VC6运行库是所有主流WIN系统自带的VC运行库,所以用VC6编译出来的执行文件非常小(而且不需要带运行库),  最后一个支持VC6的SDK是 MicrosoftPlatformSDK-February2003ForVC6,微软官网下载地址  http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/e1147034-9b0b-4494-a5bc-6dfebb6b7eb1/download-and-install-microsoft-platform-sdk-febuary-2003-last-version-with-vc6-support?forum=windowssdk 其实VC6,WINSDK只要设置几个环境变量就行了,不需要安装也可以使用,所以win7下编译肯定是没问题的,AAuto里就有一个VC6扩展库,VC6编译器+WINSDK精简后也就14.6MB,下面AAuto调用VC6编译DLL的示例,非常方便(win7下可以使用) importvc6;varvc=vc6("/",,io.open())//输入C++源码vc.cpp=/******#include<iostream>#include<windows.h>usingnamespacestd;extern"C"__declspec(dllexport)int__cdeclAdd(inta,intb){MessageBox(0,"我是DLL我被调用","我是C++DLL",MB_OK);returna+b;}******///编译生成DLLvc.exec('cl*.cpp','/W3'/*警告等级*/,'/MD'/*使用多线程动态运行库*/,'/O2/Ot/GL/EHsc'/*代码优化选项*/,'/D"WIN32"/D"_WINDOWS"/D"_MBCS"/D"_USRDLL"'/*定义常数和宏*/,'/I"./INCLUDE"'/*指定头文件目录*/,'kernel32.libuser32.lib'/*导入库*/,'/link/SUBSYSTEM:WINDOWS/MACHINE:X86'/*后面是链接参数*/,'/out:test.dll'/*输出文件名*/,'/dll'/*输出DLL*/,'/LIBPATH:".\LIB"/LIBPATH:".\LIB2"'/*指定库目录*/)vardll=raw.loadDll("test.dll")Add=dll.api("Add","int(inta,intb)","cdecl")io.print(Add(2,3)) 引用来自“figer1”的评论 VC6还是挺不错的,VC6运行库是所有主流WIN系统自带的VC运行库,所以用VC6编译出来的执行文件非常小(而且不需要带运行库),  最后一个支持VC6的SDK是 MicrosoftPlatformSDK-February2003ForVC6,微软官网下载地址  http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/e1147034-9b0b-4494-a5bc-6dfebb6b7eb1/download-and-install-microsoft-platform-sdk-febuary-2003-last-version-with-vc6-support?forum=windowssdk 其实VC6,WINSDK只要设置几个环境变量就行了,不需要安装也可以使用,所以win7下编译肯定是没问题的,AAuto里就有一个VC6扩展库,VC6编译器+WINSDK精简后也就14.6MB,下面AAuto调用VC6编译DLL的示例,非常方便(win7下可以使用) importvc6;varvc=vc6("/",,io.open())//输入C++源码vc.cpp=/******#include<iostream>#include<windows.h>usingnamespacestd;extern"C"__declspec(dllexport)int__cdeclAdd(inta,intb){MessageBox(0,"我是DLL我被调用","我是C++DLL",MB_OK);returna+b;}******///编译生成DLLvc.exec('cl*.cpp','/W3'/*警告等级*/,'/MD'/*使用多线程动态运行库*/,'/O2/Ot/GL/EHsc'/*代码优化选项*/,'/D"WIN32"/D"_WINDOWS"/D"_MBCS"/D"_USRDLL"'/*定义常数和宏*/,'/I"./INCLUDE"'/*指定头文件目录*/,'kernel32.libuser32.lib'/*导入库*/,'/link/SUBSYSTEM:WINDOWS/MACHINE:X86'/*后面是链接参数*/,'/out:test.dll'/*输出文件名*/,'/dll'/*输出DLL*/,'/LIBPATH:".\LIB"/LIBPATH:".\LIB2"'/*指定库目录*/)vardll=raw.loadDll("test.dll")Add=dll.api("Add","int(inta,intb)","cdecl")io.print(Add(2,3)) 引用来自“piyoma”的评论这不是菜鸟么???你还不配吐槽 引用来自“擅长被美女推倒”的评论 你这明显的没经验啊,人家VC6的工程,既然你想用人家的,你就应该在XP+VC6的机器上调,你倒是好先在win7上折腾半天VC6,然后又跑到vm下去折腾,至于说什么微软不提供SDK了,自己网上找啊,这很早的东西自然官方就不提供,或许提供但是你没找到连接,比如php3的源码,php官方网站我找半天就没有,只有google了,也许什么地方应该还有人保留着,对别人遗留的老代码,你应该想象下当时的环境,也许还是win98+vc6搞的呢,想想py2和py3吧……软件这东西,都是有生命支持周期的,过期的东西不被支持也是常识,不然现在的win7没办法运行dos程序是不是也被称为「自己的东西自己都不兼容」?用gcc吧,骚年 如果不用ide,直接用nmake就行了。 链接报错,重复引用: 这个是因为和lib的MT/MD参数冲突了,必须一致。

爱吃鱼的程序员 2020-06-23 13:08:30 0 浏览量 回答数 0

回答

这些类型在微软文档中是void*s: https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types 虽然可以肯定的是,cppyy(通过对Windows头文件的Clang解析)将它们解析为指向不透明类型的指针(即声明了前向,但没有定义): $ python >>> import cppyy >>> print(cppyy.gbl.HWND) <cppyy.TypedefPointerToClass object at 0x00000245E8839558> >>> 所以如果你想确定的话,你可能需要查找typedefs。 但是,不管HWND和HINSTANCE是指向不透明类的指针还是指向void的指针,即使您可以在32b Windows上对它们进行强制转换,在64b上从long到void*(或“不透明*”)的强制转换也不起作用,因为long值将被截断。因此,在类型映射中使用PyLong_AsVoidPtr而不是PyInt_AsLong。参见Python C-API文档: https://docs.python.org/3/c-api/long.html#c.PyLong_AsVoidPtr 如果类型是不透明类,您还需要显式的强制转换,最后的代码应该是: /* handle HINSTANCE */ %typemap(in) HINSTANCE { $1 = (HINSTANCE)PyLong_AsVoidPtr($input); } /* handle hwnds */ %typemap(in) HWND { $1 = (HWND)PyLong_AsVoidPtr($input); } 当然,如果HWND和HINSTANCE确实是无效的*根据微软文档页面,那么强制转换将是无操作的。

kun坤 2019-12-27 17:18:08 0 浏览量 回答数 0

回答

ReAliDDNS基于云解析API的DDNSC 基于DTSDAO发布的AliDDNS 3.0继续开发至3.6.0,算是一个成熟的版本了,今天刚编译出来,分享给大家。 需要的下载吧 AliDDNS v3.6.0 v3.6.0更新内容: 1、版本号更新至3.6.0 2、著作信息放入系统托盘右键菜单“关于”。 3、增加随系统启动功能。 4、增加软件启动隐藏至托盘功能。 5、增加日志记录、超过10000行自动转储至软件目录功能。 6、软件功能实现根据使用习惯调整。 7、配置文件名称更改,参数增加。 8、完善窗体标签功能实现时的更新逻辑。 9、完善当域名记录不存在时自动添加。 10、程序代码调整,有兴趣的可以git。 ------------------------- ReAliDDNS基于云解析API的DDNSC 这个主题时间比较久了,看了一下,大家所提到的问题在v3.6.0版本已经解决。 下一个版本功能有需求的可以提提。 居然无法发表主题,没有权限,郁闷,有权限的帮忙发到新主题,可以让更多人看到、用到、反馈,谢了先! ------------------------- ReAliDDNS基于云解析API的DDNSC 再次提交一个新的版本v3.7.0.1: 1、版本号更新至3.7.0.1 2、著作信息放入系统托盘右键菜单“关于”。 3、增加随系统启动功能。 4、增加软件启动隐藏至托盘功能。 5、增加日志记录、超过10000行自动转储至软件目录功能。 6、软件功能实现根据使用习惯调整。 7、配置文件名称更改,参数增加。 8、完善窗体标签功能实现时的更新逻辑。 9、完善当域名记录不存在时自动添加。 10、增加手工指定一个IP,用于当不能从网址获取WAN口IP时救急使用。由于通过http方式从网站获取WAN口IP技术,是从返回信息过滤抓取xxx.xxx.xxx.xxx字串,有时候返回信息包含内容过多,会过滤抓取失败,因此,有必要保留一个手工指定IP的功能。 ------------------------- ReAliDDNS基于云解析API的DDNSC v3.7.1.1 1、增加系统托盘图标状态更新功能:红色-获取WAN口IP或者获取域名绑定IP失败。黄色-获取成功,但WAN口IP和域名绑定IP不一致。绿色-获取成功,WAN口IP和域名绑定IP一致。灰色-WAN口网络不通。 2、修改代码和窗体标签刷新BUG。 3、修复系统托盘图标刷新BUG。 ------------------------- 回 34楼飞翔的笨猫的帖子 ttl值使用的系统默认值,免费版本是600秒,主要是阿里云解析有好多版本,不知道修改后能否有效果,我增加一个参数,你们测试看看。 ------------------------- ReAliDDNS基于云解析API的DDNSC v3.8.0.0 1、增加TTL参数。 2、修复代码BUG。 ------------------------- ReAliDDNS基于云解析API的DDNSC 增加了TTL参数,请大家测试反馈信息哈。 ------------------------- ReAliDDNS基于云解析API的DDNSC v3.8.1.0 1、在配置文件中对accessKeyId和accessKeySecret进行加密存储。注意现有配置文件中未加密参数将失效。 ------------------------- Re回 37楼wisdomwei的帖子 引用第39楼飞翔的笨猫于2018-04-22 10:31发表的 回 37楼wisdomwei的帖子 : win10系统,勾选启动时最小化和日志自动转储 不起作用,随系统启动后,第一次无法自动绑定域名,必须手动点击立即更新一次才行 日志如下: 2018/4/22 10:28:32 运行出错!信息: System.UnauthorizedAccessException: 对注册表项“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun”的访问被拒绝。    在 Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str)    在 Microsoft.Win32.RegistryKey.CreateSubKeyInternal(String subkey, RegistryKeyPermissionCheck permissionCheck, Object registrySecurityObj, RegistryOptions registryOptions) ....... [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1776828][/url] 1、日志第一行报错是因为系统禁止写入注册表了,当随系统启动选定时,软件会写入系统注册表,看看是否杀毒软件拦截或者禁止了。 2、自动最小化不起作用目前无法复现错误,你再观察一下,把错误日志贴出来。 3、日志转储错误,建议使用管理员模式运行程序,有可能是文件权限原因。 如果最小化和日志转储都不起作用,建议把配置文件删除,重新运行软件,录入参数再测试保存后试一下看看是否恢复正常。 ------------------------- Re回 39楼飞翔的笨猫的帖子 引用第40楼飞翔的笨猫于2018-04-22 10:33发表的 回 39楼飞翔的笨猫的帖子 : 并且 win10 系统 设置ttl值后 无法保存设置 电脑重启后 还是回复默认600 [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1776829][/url] 根据你两个帖子反馈的情况,建议你把设置文件删除,然后使用管理员模式运行一下程序,重新设置一下试试看,如果问题依旧,把错误日志贴出来看看。 ------------------------- ReAliDDNS基于云解析API的DDNSC v3.8.2.1 1、增加角色权限检测。 2、更多功能日志输出。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第46楼佳盟自动化于2018-04-22 17:58发表的 ReAliDDNS基于云解析API的DDNSC : 见识了  我想发链接可以吗? [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1776874][/url] 可以,就是拿出来分享的哈 ------------------------- Re回 43楼wisdomwei的帖子 引用第45楼飞翔的笨猫于2018-04-22 17:17发表的 回 43楼wisdomwei的帖子 : 用了 最新的3.8.2.1版 可以自启动 设置也能保存 ddns也能自动更新,但是日志还是报错,你看下: 2018/4/22 17:06:20 计算机名: Work-PC 2018/4/22 17:06:20 当前用户: he* 2018/4/22 17:06:20 角色信息:Work-PChe* 2018/4/22 17:06:20 当前用户需要文件写入和注册表操作权限,否则相关参数不起作用! ....... [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1776869][/url] 提示注册表访问被拒绝,原因可能是注册表访问策略被修改,或者安装了杀毒软件,例如360,把软件对注册表的访问拦截了,如果是360,看看拦截清单里面有没有,有的话就删除拦截记录,再添加一条信任记录。 如果不是360等杀毒软件,就编辑一下组策略,把当前用户对注册表访问通过。 ------------------------- ReAliDDNS基于云解析API的DDNSC 下一个版本打算增加一个自动检测升级功能,实现无人值守的自动检测升级,不用再手工替换升级版本了,目前开发中。 ------------------------- 回 50楼清者自清12的帖子 使用了c#默认的控件textbox,mask设置成了000.000.000.000,代码里面校验了不能超出255.255.255.255,使用输入时稍微将就一下,以后有时间会重新设计一下控件,默认textbox处理录入格式时比较蠢。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第53楼清者自清12于2018-06-08 13:56发表的 ReAliDDNS基于云解析API的DDNSC : 还有个,获取IP那两个网址能不能自动切换,当一个网址获取不到IP时,自动切换到另外一个网址。 软件启动过程中,当获取不到IP时,软件就会卡死好一会, [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1782201][/url] 下载最新版本,已经添加了www.net.cn获取IP的网址,当然可以自行录入地址,地址获取返回含有xxx.xxx.xxx.xxx格式的ip的,函数会自动过滤其它信息,但内容含有多个ip就会失败。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第55楼lhpdir于2018-06-13 23:08发表的 ReAliDDNS基于云解析API的DDNSC : 如果设置时间3600秒,左边显示的是360,不过10秒掉1秒,是作者有意为之? [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1782899][/url] 是窗体控件格式问题,宽度不够,新版本已经增加了宽度,下载新版本即可。至于10秒掉一秒,估计是cpu时钟运行与程序控件显示不同步造成的,理论上应该是毫秒,本程序使用的是C#自带Timer控件,没有修改过。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第54楼lhpdir于2018-06-13 21:56发表的 ReAliDDNS基于云解析API的DDNSC : 解压密码? [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1782895][/url] winrar压缩,不需要解压密码 ------------------------- ReAliDDNS基于云解析API的DDNSC v3.8.4.0   1、增加Ngrok网络穿透功能。 2、调整倒计时控件宽度,修复当倒计时超过3位时被遮挡的问题。 3、精简代码。 ------------------------- Re回 51楼wisdomwei的帖子 引用第52楼清者自清12于2018-06-02 13:03发表的 回 51楼wisdomwei的帖子 : 兄台,whatismyip.akamai.com这个网址我这边有些地方经常获取不到IP,然后WAN口地址就变成0.0.0.0  软件能不能加一条,如果IP是0.0.0.0则不更新。要不然一获取不到IP,域名就绑定0.0.0.0了 [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1781486][/url] 已经实现自主添加其他查询网址,启用自动运行时会逐个查询。 v3.8.5.0 1、设置修改实时保存。 2、可添加多个公网IP查询网址,自动运行是逐个查询,当有返回值时停止。 3、简化代码。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第53楼清者自清12于2018-06-08 13:56发表的 ReAliDDNS基于云解析API的DDNSC : 还有个,获取IP那两个网址能不能自动切换,当一个网址获取不到IP时,自动切换到另外一个网址。 软件启动过程中,当获取不到IP时,软件就会卡死好一会, [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1782201][/url] 已经实现自主添加其他查询网址,启用自动运行时会逐个查询。 v3.8.5.0 1、设置修改实时保存。 2、可添加多个公网IP查询网址,自动运行是逐个查询,当有返回值时停止。 3、简化代码。 ------------------------- ReAliDDNS基于云解析API的DDNSC v3.8.5.0 1、设置修改实时保存。 2、可添加多个公网IP查询网址,自动运行是逐个查询,当有返回值时停止。 3、简化代码。 ------------------------- ReAliDDNS基于云解析API的DDNSC v3.8.6.0   1、修改代码,.net框架版本由4.5降低到4.0,可在WinXP系统运行,WinXP系统最高支持.net 4.0。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第65楼purelyc于2018-07-21 18:44发表的 ReAliDDNS基于云解析API的DDNSC : 感谢作者的软件,请问有没有方式做成可以为域名下多个主机记录做记录值的,现在只能做一个有点浪费域名了 [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1786873][/url] 你的意思是动态刷新几个A记录的IP地址吗?把几个记录刷新同一个IP地址还是不同IP地址? 或者你的意思是做一个管理域名的软件? ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第68楼qz_陈sir于2018-07-22 13:08发表的 ReAliDDNS基于云解析API的DDNSC : 楼主 发现你这个工具有个问题  用了这个工具  有设置了开机启动  其他用户远程桌面注销不了  必须把工具先退出才能注销   测了3个2003的服务器都是这样 [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1786987][/url] 如果win2003服务器,建议查看一下系统日志,看看远程登录之后都执行了什么操作,最好把相关日志贴出来看看。 远程桌面注销不了这种情况第一次遇到,我试试看能否重现你说的情况。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第70楼purelyc于2018-07-22 17:21发表的 ReAliDDNS基于云解析API的DDNSC : 请问一个问题,启动后不手动点一次测试连接,域名IP就无法自动绑定 自动更新时间到达后提示 2018/7/22 17:02:25    updateDomainRecord() Exception:  Aliyun.Acs.Core.Exceptions.ClientException: InvalidParameter : The parameter value RecordId is invalid.    在 Aliyun.Acs.Core.DefaultAcsClient.ParseAcsResponse[T](AcsRequest`1 request, HttpResponse httpResponse) ....... [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1787006][/url] 1、只有勾选了启动自动运行,软件启动才会自动分别查询阿里云DNS的A记录和WAN口IP,查询之后对比两者IP是否一致,一致就静默,等待下一次更新时间到来,不一致就立即更新。 如果没有勾选,软件启动后需要手工点击测试。 2、当返回你贴出来的日志时,说明你之前已经成功更新过A记录,但再次运行时,你只修改了域名,没有经过测试和添加到阿里云DNS,造成阿里云DNS里面的recordid对应的域名和你现在配置文件里面的不一致,正确的方法是每次修改之后都测试一下,如果不存在会提醒添加记录。 下载使用最新版本v3.8.6.0,日志记录里面会有很明确的提醒。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第73楼cxq82于2018-07-27 11:03发表的 ReAliDDNS基于云解析API的DDNSC : 帖主好! 非常感谢,开发这个插件分享给大家,这个实在找到辛苦,最终还是找到这里了。 有个疑问反馈下: 1、局域网内2机器同时开程序,更新同一域名,过会儿会无法更新域名;阿里后台发现有2个A记录,不懂是阿里故意设置的还是bug。 2、上述情况,关闭一台机器;在另一地域,用此程序更新另一个二级域名,也出现无法更新现象;是否同一key 不能多台电脑使用呢? ....... [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1787650][/url] 1、对于同一局域网内的两台机器同时运行AliDDNS.exe,更新同一域名a.demo.com,只要录入没有问题,应该不会出现a.demo.com在阿里云DNS里面有两个recordid,请检查录入是否正确。如果问题依旧,请把两台机器的软件运行界面截图和运行日志一起贴出来,还有阿里云控制台A记录的截图,我分析一下看看是否是软件BUG。 2、不同局域网,只要WAN口IP不同,不管地域是否是否相同,更新同一域名,只会导致阿里云DNS该A记录的IP不断变化。 3、不管是否是同一局域网,同一accesskey和accesssecret,可以更新任意不同A记录的IP,如果不能成功,请检查accesskey和accesssecret是否正确,或者网络路由是否有防火墙限制,点击【测试】试一下。可以把日志贴出来看看,分析一下问题。 据我所知,目前阿里云还没有限制DNS中A记录更新的频率和次数。 我见过宽带使用长城宽带的,每次更新WAN口IP都不同,奇葩的不得了,最后ngrok网络穿透了事。 ------------------------- Re回 72楼wisdomwei的帖子 引用第75楼kakalin于2018-07-31 15:39发表的 回 72楼wisdomwei的帖子 : 帖主好,我也遇到这样的问题,随系统自动启动已经开了,但是还是要每次手动点击测试连接才能正常工作。 日志: 2018/7/31 15:31:48 计算机名: xxxx 2018/7/31 15:31:48 当前用户: xxx 2018/7/31 15:31:48 角色信息:xxxx ....... [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1788169][/url] 关键的出错信息在这里: 2018/7/31 15:32:03 updateDomainRecord() Exception:  Aliyun.Acs.Core.Exceptions.ClientException: InvalidParameter : The parameter value RecordId is invalid. 之前已经成功运行过,阿里云DNS已经添加了域名并返回recordid了,但是,你再次启动时,配置文件里面的recordid和域名与阿里云DNS里面的recordid和域名不一致! 可能原因:1、本地修改域名后没有测试并添加。2、本地修改了recordid。3、本地配置文件被手工修改。4、阿里云DNS对应记录被手工修改。 解决办法:修改域名后点击测试和添加,确保生效,不要手工修改本地配置文件和阿里云DNS服务器里面的域名记录,除非你知道是在干什么。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第81楼鱼花于2018-08-14 20:58发表的 ReAliDDNS基于云解析API的DDNSC : 用上3.8.6版,乍么github.com/dtsdao/AliDDNS只有verson 1.0 ??? 3.8.6版在电算机重启后不会得自动点击测试连接,只能手工。要是人在外边,刚好ip又给营运商变了就不能及时更新正确ip了 补充:我的win 2012 打上自启了,能自启,就是不能解析? [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1789959][/url] 原作者已经不维护更新了,我fork过来继续更新。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第82楼鱼花于2018-08-14 21:18发表的 ReAliDDNS基于云解析API的DDNSC : 018/8/14 21:08:57 计算机名: computer 2018/8/14 21:08:57 当前用户: Administrator 2018/8/14 21:08:57 角色信息:computerAdministrator 2018/8/14 21:08:57 当前用户需要文件写入和注册表操作权限,否则相关参数不起作用! ....... [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1789962][/url] 稍后我会更新一下代码,当IP为0.0.0.0的时候不更新阿里云DNS记录,仅提示未能获取IP,需要手工获取。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第80楼服务器云于2018-08-10 22:56发表的 ReAliDDNS基于云解析API的DDNSC : 这个就是根据家里的IP 变化通过api动态的更新DNS? 有延迟么?python可以做么? [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1789426][/url] 完全可以,很简单。 ------------------------- Re回 28楼wisdomwei的帖子 引用第79楼flcz于2018-08-10 16:24发表的 回 28楼wisdomwei的帖子 : 有没有获取到0.0.0.0,不修改记录的功能。我现在可能是网络原因,老被改为0.0.0.0 [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1789379][/url] 稍后我会更新一下代码,当获取IP为0.0.0.0时不更新阿里云记录, 提示手工更改。 你可以尝试添加其他获取IP的地址的网址,看能否自动获取。例如:http://www.net.cn/static/customercare/yourip.asp http://ip.qq.com/ http://www.3322.org/dyndns/getip ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第78楼鱼花于2018-08-07 09:43发表的 ReAliDDNS基于云解析API的DDNSC : win 2012点击验证安钮没反应 [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1788817][/url] 是“测试连接”按钮吧?点击后稍等,如果网络状况不佳,或者设置错误,会有延迟。 程序运行需要.NET FRAMEWORK 4.0以上版本。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第77楼kakalin于2018-08-01 21:07发表的 ReAliDDNS基于云解析API的DDNSC : 找到原因了,本地配置文件无法保存recordid,手动写进去以后就正常了。 [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1788345][/url] 不建议修改recordid,除非你明白是在做什么?修改域名后测试连接,如果DNS记录存在,会自动获取recordid,如果不存在,会提示添加新记录。 ------------------------- Re回 72楼wisdomwei的帖子 引用第75楼kakalin于2018-07-31 15:39发表的 回 72楼wisdomwei的帖子 : 帖主好,我也遇到这样的问题,随系统自动启动已经开了,但是还是要每次手动点击测试连接才能正常工作。 日志: 2018/7/31 15:31:48 计算机名: xxxx 2018/7/31 15:31:48 当前用户: xxx 2018/7/31 15:31:48 角色信息:xxxx ....... [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1788169][/url] 勾选随系统启动自动运行即可。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第90楼kanxiji于2018-08-18 23:34发表的 ReAliDDNS基于云解析API的DDNSC : 楼主你好 你的东西很好用, 提个建议:TTL和更新秒数可以分别设置 [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1791200][/url] 抱歉是个BUG,升级对配置文件读写时参数错误,已经修复。感谢提供建议! ------------------------- ReAliDDNS基于云解析API的DDNSC v.3.8.6.2 1、修复配置文件参数TTL和WaitingTime写入BUG。 2、增加更新逻辑,当获取WAN口IP返回0.0.0.0时,不更新阿里云DNS记录,提示手工修改。 ------------------------- ReAliDDNS基于云解析API的DDNSC v3.8.6.3 1、修改测试存储逻辑,锁定Recordid编辑框,避免添加域名成功后,手工修改造成配置文件存储Recordid与服务器不一致时造成的自动更新出错。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第94楼鱼花于2018-08-28 11:00发表的 ReAliDDNS基于云解析API的DDNSC : v3.8.6.3  ,在win2012下点测试,没能得到本地ip 勾选自启,关闭退出,重新启动,这选项是空的。 之前下载的版本,在win 2012 r2下手动还能用就是机器重启后,没能得到本机ip,要手机点测试后才正常。 ....... [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1792007][/url] 1、点击【测试连接】是测试阿里云账号信息设置是否正确,如果正确就会测试录入的域名记录是否存在,如果存在就返回recordid,如果不存在就提示添加。 2、获取本地WAN口IP点击【获取WAN口IP】按钮,而不是【测试连接】按钮。 3、如果需要自动更新,需要设置自动更新倒计时秒数,勾选自动更新,勾选随系统启动自动运行。 感觉你对软件运行界面设置不熟悉,建议详细看一下软件运行界面,配置修改日志输出框都会有提示,也详细看一下。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第96楼saoian于2018-08-30 16:02发表的 ReAliDDNS基于云解析API的DDNSC : 你好: 程序运行时提示,版本检测程序update.exe未找到,能把这个文件发出来吗? 另外在运行升级时提示,软件运行目录下没有找到updateinfo.txt,是否是直接在运行目录下新建一个updateinfo.txt文件就可了? [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1792277][/url] 抱歉自动升级功能的update.exe还有些BUG,还没有放出来,请先取消勾选【关于】菜单下的【自动检测升级】,不勾选时其它功能可正常使用,等update.exe放出来您再勾选这个功能菜单。 ------------------------- ReReAliDDNS基于云解析API的DDNSC 引用第98楼daoyuanjiao于2018-09-14 11:12发表的 ReAliDDNS基于云解析API的DDNSC : 可以具体描述一下里面的ngrok的使用吗?我的配置后一直无法访问。但是单独打开ngrok设置令牌后,启动ngrok http 80 是可以访问的!谢谢!我i一直显示“Ngrok功能启用,ngrok.exe将自动加载!本机浏览器打开:127.0.0.1:4040 查看运行状态。”但是打开127.0.0.1:4040一直显示无法访问! [url=https://bbs.aliyun.com/job.php?action=topost&tid=289624&pid=1793763][/url] ngrok的详细使用方法你从官网看一下,我这里简单说两个方法: 1、使用官网网址映射。在ngrok官网 注册一个免费账号,从官方下载编译好的ngrok.exe程序,跟AliDDNS.EXE放在一个文件夹下,然后根据页面提示,填写参数,保存,勾选后自动运行。 2、如果自己有服务器的话,从github fork一下ngrok源码到本地,直接编译一个ngrokd出来,在服务器上运行,一般运行的方式是./bin/ngrokd -tlsKey="server.key" -tlsCrt="server.crt" -domain="ngrok.xxxx.cn" -httpAddr=":8081" -httpsAddr=":8082" -tunnelAddr=":8083" &  然后再根据编译时生成的证书,编译一个win的ngrok.exe程序来,跟AliDDNS.exe放在一个文件夹下,根据服务端的配置,令牌为空,地址为:ngrok.xxx.cn:8083,要穿透的二级域名假设为demo,那么穿透后的完整URL是http://demo.ngrok.xxx.cn:8081 访问http服务, 或者https://demo.ngrok.xxx.cn:8082 访问https服务,页面是否能打开,取决于80端口上是否有服务可以访问。内网的其他服务端口也是一样,假设ftp服务跑在21端口上,穿透WAN端口是2221,那么访问URL是ftp://demo.ngrok.xxx.cn:2221,不知道说明白了吗? ------------------------- 回 102楼estas的帖子 我用的北京联通的光纤,没有任何问题。 把日志贴出来。 DDNS跟线路关系不大,阿里云是智能路由,看本地DNS设置,或者杀毒软件设置。 ------------------------- 回 100楼daoyuanjiao的帖子 不支持,仅在windows平台可用,.net3.5以上。

wisdomwei 2019-12-02 02:58:27 0 浏览量 回答数 0

回答

好像win下只能调用dll,既然你是用c/c++开发的库,那就应该尽可能的使用跨平台的api,win下发布为dll,linux下发布为so。就像汽车靠轮子走,轮船靠螺旋桨走是一个道理,虽然都是发动机带动。so是linux下编译的库文件而dll是win平台的 是不是win上面安装了EcgAnalysis,linux上面没有安装EcgAnalysis类?   你可以去看一些跨平台的解决方案,例如Eclipse中的插件,需要调用dll/so,它会同时内置两种文件dll/so,然后程序运行的时候,通过获取os.name去判断是windows还是linux,然后通过System.loadLibrary方法去加载对应的版本。 不是说so中没有调用linux的平台windows下就可以调用。dll和so分别是windows和linux下定义的代码库的标准,文件的格式是windows和linux自己定义的,肯定是不兼容的,因此无法实现一个版本多个平台通吃的。 所以,还是按照检测系统、加载不通的库的方式来吧回复<aclass="referer"target="_blank">@hhl3136:请把第一个参数改为so文件的绝对路径试试回复<aclass="referer"target="_blank">@依然菜刀:Clibraryinstance=(Clibrary)Native.loadLibrary("EcgAnalysis",Clibrary.class);回复<aclass="referer"target="_blank">@hhl3136:把加载so部分的代码贴出来!要崩溃了,菜鸟请教大神,我现在只有一个so文件,在linux中把so文件copy到/usr/lib中,但是使用jna还是不能调用,报错:connotopensharedobjectfile,nosuchfileordirectoryso是linux下动态库,Windows下如果做android开发可以写代码调so 根据你的表述,应该是环境变量的问题,可能你的linux没有将/usr/lib加入到环境变量中,因此请不要使用System.loadLibrary+库名称的方式加载,考虑改为System.load(文件绝对路径)的方式加载!回复<aclass="referer"target="_blank">@依然菜刀:老哥,看下我用几种平台下的so文件,使用绝对路径调用报的错回复<aclass="referer"target="_blank">@hhl3136:看我的多条回复,说的已经很清楚了回复<aclass="referer"target="_blank">@依然菜刀:原谅我的无知,so文件不都是在linux上生成的吗?安卓可以直接调用这个so吗?回复<aclass="referer"target="_blank">@hhl3136:Linux的so库一般要在X86平台下编译,Android手机都采用ARM平台,两个平台的指令集都不一样回复<aclass="referer"target="_blank">@hhl3136:原来在Android上的需要拿源代码到Linux环境下重新编译才能使用 X86=======Exceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:wrongELFclass:ELFCLASS32(Possiblecause:architecturewordwidthmismatch)x86_64Exceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:liblog.so:cannotopensharedobjectfile:Nosuchfileordirectoryarm64Exceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:cannotopensharedobjectfile:Nosuchfileordirectory(Possiblecause:can'tloadthis.so(machinecode=0xb7)onaAMD64-bitplatform)mips64Exceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:cannotopensharedobjectfile:Nosuchfileordirectory(Possiblecause:can'tloadMIPS-bit.soonaAMD64-bitplatform)mipsExceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:wrongELFclass:ELFCLASS32(Possiblecause:architecturewordwidthmismatch) armeabi-v7aExceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:wrongELFclass:ELFCLASS32(Possiblecause:architecturewordwidthmismatch)arneabiExceptioninthread"main"java.lang.UnsatisfiedLinkError:/usr/lib/libEcgAnalysis.so:/usr/lib/libEcgAnalysis.so:wrongELFclass:ELFCLASS32(Possiblecause:architecturewordwidthmismatch)回复<aclass="referer"target="_blank">@依然菜刀:好的,非常感谢!!别想了,C++是不能夸平台的,一定要对应平台的才行,想办法拿源码,重新编译吧,当然,你也可以用虚拟机技术

爱吃鱼的程序员 2020-06-07 22:35:02 0 浏览量 回答数 0

问题

osscmd如何实现快速安装?

青衫无名 2019-12-01 21:59:12 2272 浏览量 回答数 0

回答

JavaJDK和SDK的区别如下: 1、SDK是Software Development Kit的缩写,中文意思是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。SDK是一系列文件的组合,它为软件的开发提供一个平台(它为软件开发使用各种API提供便利)。 2、JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software development kit)。 3、可以认为jdk只是sdk的一种(子集),因为它是开发java程序的一个平台,开发其他程序的sdk可以没有jdk。比如你下载了一个软件开发平台 eclipse-SDK-3.2.2-win32.zip,它本身里面是没有jdk的。但是只要开发java程序就必须使用jdk。 扩展资料: Java语言规范 JCP(Java Community Process)是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新Java技术规范、参考实现(RI)、技术兼容包(TCK)。 JCP维护的规范包括Java ME、Java SE、Java EE、XML、OSS、JAIN等。组织成员可以提交JSR(Java Specification Requests),通过特定程序以后,进入到下一版本的规范里面。 JSR是早期提议和最终发布的Java平台规范的具体描述。通常,一个新的JSR的提出是为了增加或者规范Java平台的功能。某个具体的JSR由专家组共同来制定,工作由组长协调。 例如,CLDC1.0(Connected Limited Device Configuration,JSR30)由Sun公司的Antero Taivalsaari担任组长,同时专家组的成员还包括Siemens、Motorola、Nokia、Symbian等。Java ME平台规范是在JSR68中定义的,规范组长是Sun公司的Jon Courtney。 JSR完成后,相关的规范及JavaAPI会在JCP的官方网站发布。设备制造商可以在自己的产品中实现某个JSR,如MIDP2.0(JSRll8)。但是这些都必须要通过TCK(Technology Compatibility Kit)测试以确保技术兼容性。 参考资料:百度百科-sdk “答案来源于网络,供您参考” 希望以上信息可以帮到您!

牧明 2019-12-02 02:16:21 0 浏览量 回答数 0

问题

Xampps 1.8.9 wamp环境包全系列正式发布.

kideny 2019-12-01 20:59:03 9910 浏览量 回答数 5

问题

整理发布本人所有开源代码、工具及相关博文(C++):报错

kun坤 2020-06-09 12:15:48 0 浏览量 回答数 1

回答

使用过ngx_lua的方式 记录请求信息 以及响应信息  首先 nginx 是不会读取http请求的body的 ,下面说明的  是我所知道的一个办法  存手打  代码有部分复制我写的。。 首先用lua在nginx内部的做一个小代理转发         location / {             content_by_lua_block {                 local method_name = ngx.req.get_method()  -- 获得请求方法                 local get_uri_args = ngx.req.get_uri_args  -- 获得get参数的方法                 local args = get_uri_args()   -- 获得get参数                 local res                 if method_name == 'GET' then                     res = ngx.location.capture('/sub', {method = ngx.GET, ['args'] =  args, ctx = {myuri = ngx.var.uri, my_remote_addr = ngx.var.remote_addr}})                 elseif method_name == 'POST' or method_name == 'PUT' then                     ngx.req.read_body() -- 读取请求body                     res = ngx.location.capture('/sub', {always_forward_body = true, ['args'] =  args, ctx = {myuri = ngx.var.uri, my_remote_addr = ngx.var.remote_addr}})                 end                -- 这是子请求返回的header                  local header = res.header                 -- 设置响应header                 for key in pairs(header) do                     ngx.header[key] = header[key]                 end                -- 下面两个函数方法可以获得post参数   https://github.com/openresty/lua-nginx-module  这个地址有更详细的文档  文档里面提供了可以操作数据库等方法 你可以用做存储数据                 -- ngx.req.get_body_data()  -- post 参数  这个值都是字符串  存在\r\n这些                 --  ngx.req.get_post_args() -- 或者这个方法   但是 需要注意的是  MIME type 需要  application/x-www-form-urlencoded                 ngx.status = res.status   -- 设置状态码  跟子请求一样                 ngx.say(res.body)  -- 输出子请求的响应body                ngx.exit( res.status)                  }         } 这是内部的location  是上面content_by_lua_block块  ngx.location.capture  转发过来的 location = /sub {             internal;             set_by_lua_block $myuri {                 return ngx.ctx.myuri             }             set_by_lua_block $my_remote_addr {                 return ngx.ctx.my_remote_addr             }             try_files $myuri $myuri/ /index.php?$query_string;         }   如果你只想要记录post的请求话  可以不用的上面的子请求方式   // 其实记录响应信息也可以不用。。 但是我做的时候太麻烦了  线上没用 我就没贴出来 下面的只记录就请求信息的方式简介 在log_by_lua_*  阶段 也可以获取请求信息并且记录 在nginx配置文件中添加 lua_need_request_body on;  # 具体原因 https://github.com/iresty/nginx-lua-module-zh-wiki#lua_need_request_body  查看 location / {     log_by_lua_block {             -- ngx.req.get_body_data()  -- post 参数  这个值都是字符串  存在\r\n这些       --  ngx.req.get_post_args() -- 或者这个方法   但是 需要注意的是  MIME type 需要  application/x-www-form-urlencoded     } } 但是需要注意 log_by_log 阶段无法使用socket相关的API  所以无法插入数据库等操作  所以可以用几种思路来 1、 https://github.com/p0pr0ck5/lua-resty-logger-socket  具体使用看这个文档 2、 我使用的是把信息保存在ngx_lua 的全局共享内存中  操作方式类似redis,然后在其他阶段执行, 具体使用API还是可以看文档    最后你使用的是windows  所以可以使用已经打包好的openresty win版  https://openresty.org/download/openresty-1.13.6.1-win32.zip   openresty 其实使用起来跟nginx是一样的  ######你不说大家怎么知道你试过哪些方法....######通过lua的方式获取到了记录,但是不知道怎么返回的数据突然就有问题了,提示返回参数错误######你的现象说的不具体啊 很难帮你想

kun坤 2020-05-31 23:57:07 0 浏览量 回答数 0

回答

使用过ngx_lua的方式 记录请求信息 以及响应信息  首先 nginx 是不会读取http请求的body的 ,下面说明的  是我所知道的一个办法  存手打  代码有部分复制我写的。。 首先用lua在nginx内部的做一个小代理转发         location / {             content_by_lua_block {                 local method_name = ngx.req.get_method()  -- 获得请求方法                 local get_uri_args = ngx.req.get_uri_args  -- 获得get参数的方法                 local args = get_uri_args()   -- 获得get参数                 local res                 if method_name == 'GET' then                     res = ngx.location.capture('/sub', {method = ngx.GET, ['args'] =  args, ctx = {myuri = ngx.var.uri, my_remote_addr = ngx.var.remote_addr}})                 elseif method_name == 'POST' or method_name == 'PUT' then                     ngx.req.read_body() -- 读取请求body                     res = ngx.location.capture('/sub', {always_forward_body = true, ['args'] =  args, ctx = {myuri = ngx.var.uri, my_remote_addr = ngx.var.remote_addr}})                 end                -- 这是子请求返回的header                  local header = res.header                 -- 设置响应header                 for key in pairs(header) do                     ngx.header[key] = header[key]                 end                -- 下面两个函数方法可以获得post参数   https://github.com/openresty/lua-nginx-module  这个地址有更详细的文档  文档里面提供了可以操作数据库等方法 你可以用做存储数据                 -- ngx.req.get_body_data()  -- post 参数  这个值都是字符串  存在\r\n这些                 --  ngx.req.get_post_args() -- 或者这个方法   但是 需要注意的是  MIME type 需要  application/x-www-form-urlencoded                 ngx.status = res.status   -- 设置状态码  跟子请求一样                 ngx.say(res.body)  -- 输出子请求的响应body                ngx.exit( res.status)                  }         } # 这是内部的location  是上面content_by_lua_block块  ngx.location.capture  转发过来的 location = /sub {             internal;             set_by_lua_block $myuri {                 return ngx.ctx.myuri             }             set_by_lua_block $my_remote_addr {                 return ngx.ctx.my_remote_addr             }             try_files $myuri $myuri/ /index.php?$query_string;         }   如果你只想要记录post的请求话  可以不用的上面的子请求方式   // 其实记录响应信息也可以不用。。 但是我做的时候太麻烦了  线上没用 我就没贴出来 下面的只记录就请求信息的方式简介 在log_by_lua_*  阶段 也可以获取请求信息并且记录 在nginx配置文件中添加 lua_need_request_body on;  # 具体原因 https://github.com/iresty/nginx-lua-module-zh-wiki#lua_need_request_body  查看 location / {     log_by_lua_block {             -- ngx.req.get_body_data()  -- post 参数  这个值都是字符串  存在\r\n这些       --  ngx.req.get_post_args() -- 或者这个方法   但是 需要注意的是  MIME type 需要  application/x-www-form-urlencoded     } } 但是需要注意 log_by_log 阶段无法使用socket相关的API  所以无法插入数据库等操作  所以可以用几种思路来 1、 https://github.com/p0pr0ck5/lua-resty-logger-socket  具体使用看这个文档 2、 我使用的是把信息保存在ngx_lua 的全局共享内存中  操作方式类似redis,然后在其他阶段执行, 具体使用API还是可以看文档    最后你使用的是windows  所以可以使用已经打包好的openresty win版  https://openresty.org/download/openresty-1.13.6.1-win32.zip   openresty 其实使用起来跟nginx是一样的  ###### 你不说大家怎么知道你试过哪些方法....###### 通过lua的方式获取到了记录,但是不知道怎么返回的数据突然就有问题了,提示返回参数错误######你的现象说的不具体啊 很难帮你想

kun坤 2020-06-14 07:35:15 0 浏览量 回答数 0

回答

" 使用过ngx_lua的方式 记录请求信息 以及响应信息  首先 nginx 是不会读取http请求的body的 ,下面说明的  是我所知道的一个办法  存手打  代码有部分复制我写的。。 首先用lua在nginx内部的做一个小代理转发         location / {             content_by_lua_block {                 local method_name = ngx.req.get_method()  -- 获得请求方法                 local get_uri_args = ngx.req.get_uri_args  -- 获得get参数的方法                 local args = get_uri_args()   -- 获得get参数                 local res                 if method_name == 'GET' then                     res = ngx.location.capture('/sub', {method = ngx.GET, ['args'] =  args, ctx = {myuri = ngx.var.uri, my_remote_addr = ngx.var.remote_addr}})                 elseif method_name == 'POST' or method_name == 'PUT' then                     ngx.req.read_body() -- 读取请求body                     res = ngx.location.capture('/sub', {always_forward_body = true, ['args'] =  args, ctx = {myuri = ngx.var.uri, my_remote_addr = ngx.var.remote_addr}})                 end                -- 这是子请求返回的header                  local header = res.header                 -- 设置响应header                 for key in pairs(header) do                     ngx.header[key] = header[key]                 end                -- 下面两个函数方法可以获得post参数   https://github.com/openresty/lua-nginx-module  这个地址有更详细的文档  文档里面提供了可以操作数据库等方法 你可以用做存储数据                 -- ngx.req.get_body_data()  -- post 参数  这个值都是字符串  存在\r\n这些                 --  ngx.req.get_post_args() -- 或者这个方法   但是 需要注意的是  MIME type 需要  application/x-www-form-urlencoded                 ngx.status = res.status   -- 设置状态码  跟子请求一样                 ngx.say(res.body)  -- 输出子请求的响应body                ngx.exit( res.status)                  }         } # 这是内部的location  是上面content_by_lua_block块  ngx.location.capture  转发过来的 location = /sub {             internal;             set_by_lua_block $myuri {                 return ngx.ctx.myuri             }             set_by_lua_block $my_remote_addr {                 return ngx.ctx.my_remote_addr             }             try_files $myuri $myuri/ /index.php?$query_string;         }   如果你只想要记录post的请求话  可以不用的上面的子请求方式   // 其实记录响应信息也可以不用。。 但是我做的时候太麻烦了  线上没用 我就没贴出来 下面的只记录就请求信息的方式简介 在log_by_lua_*  阶段 也可以获取请求信息并且记录 在nginx配置文件中添加 lua_need_request_body on;  # 具体原因 https://github.com/iresty/nginx-lua-module-zh-wiki#lua_need_request_body  查看 location / {     log_by_lua_block {             -- ngx.req.get_body_data()  -- post 参数  这个值都是字符串  存在\r\n这些       --  ngx.req.get_post_args() -- 或者这个方法   但是 需要注意的是  MIME type 需要  application/x-www-form-urlencoded     } } 但是需要注意 log_by_log 阶段无法使用socket相关的API  所以无法插入数据库等操作  所以可以用几种思路来 1、 https://github.com/p0pr0ck5/lua-resty-logger-socket  具体使用看这个文档 2、 我使用的是把信息保存在ngx_lua 的全局共享内存中  操作方式类似redis,然后在其他阶段执行, 具体使用API还是可以看文档    最后你使用的是windows  所以可以使用已经打包好的openresty win版  https://openresty.org/download/openresty-1.13.6.1-win32.zip   openresty 其实使用起来跟nginx是一样的  ###### 你不说大家怎么知道你试过哪些方法....###### 通过lua的方式获取到了记录,但是不知道怎么返回的数据突然就有问题了,提示返回参数错误######你的现象说的不具体啊 很难帮你想"

montos 2020-05-31 16:17:41 0 浏览量 回答数 0

回答

" 使用过ngx_lua的方式 记录请求信息 以及响应信息  首先 nginx 是不会读取http请求的body的 ,下面说明的  是我所知道的一个办法  存手打  代码有部分复制我写的。。 首先用lua在nginx内部的做一个小代理转发         location / {             content_by_lua_block {                 local method_name = ngx.req.get_method()  -- 获得请求方法                 local get_uri_args = ngx.req.get_uri_args  -- 获得get参数的方法                 local args = get_uri_args()   -- 获得get参数                 local res                 if method_name == 'GET' then                     res = ngx.location.capture('/sub', {method = ngx.GET, ['args'] =  args, ctx = {myuri = ngx.var.uri, my_remote_addr = ngx.var.remote_addr}})                 elseif method_name == 'POST' or method_name == 'PUT' then                     ngx.req.read_body() -- 读取请求body                     res = ngx.location.capture('/sub', {always_forward_body = true, ['args'] =  args, ctx = {myuri = ngx.var.uri, my_remote_addr = ngx.var.remote_addr}})                 end                -- 这是子请求返回的header                  local header = res.header                 -- 设置响应header                 for key in pairs(header) do                     ngx.header[key] = header[key]                 end                -- 下面两个函数方法可以获得post参数   https://github.com/openresty/lua-nginx-module  这个地址有更详细的文档  文档里面提供了可以操作数据库等方法 你可以用做存储数据                 -- ngx.req.get_body_data()  -- post 参数  这个值都是字符串  存在\r\n这些                 --  ngx.req.get_post_args() -- 或者这个方法   但是 需要注意的是  MIME type 需要  application/x-www-form-urlencoded                 ngx.status = res.status   -- 设置状态码  跟子请求一样                 ngx.say(res.body)  -- 输出子请求的响应body                ngx.exit( res.status)                  }         } # 这是内部的location  是上面content_by_lua_block块  ngx.location.capture  转发过来的 location = /sub {             internal;             set_by_lua_block $myuri {                 return ngx.ctx.myuri             }             set_by_lua_block $my_remote_addr {                 return ngx.ctx.my_remote_addr             }             try_files $myuri $myuri/ /index.php?$query_string;         }   如果你只想要记录post的请求话  可以不用的上面的子请求方式   // 其实记录响应信息也可以不用。。 但是我做的时候太麻烦了  线上没用 我就没贴出来 下面的只记录就请求信息的方式简介 在log_by_lua_*  阶段 也可以获取请求信息并且记录 在nginx配置文件中添加 lua_need_request_body on;  # 具体原因 https://github.com/iresty/nginx-lua-module-zh-wiki#lua_need_request_body  查看 location / {     log_by_lua_block {             -- ngx.req.get_body_data()  -- post 参数  这个值都是字符串  存在\r\n这些       --  ngx.req.get_post_args() -- 或者这个方法   但是 需要注意的是  MIME type 需要  application/x-www-form-urlencoded     } } 但是需要注意 log_by_log 阶段无法使用socket相关的API  所以无法插入数据库等操作  所以可以用几种思路来 1、 https://github.com/p0pr0ck5/lua-resty-logger-socket  具体使用看这个文档 2、 我使用的是把信息保存在ngx_lua 的全局共享内存中  操作方式类似redis,然后在其他阶段执行, 具体使用API还是可以看文档    最后你使用的是windows  所以可以使用已经打包好的openresty win版  https://openresty.org/download/openresty-1.13.6.1-win32.zip   openresty 其实使用起来跟nginx是一样的  ###### 你不说大家怎么知道你试过哪些方法....###### 通过lua的方式获取到了记录,但是不知道怎么返回的数据突然就有问题了,提示返回参数错误######你的现象说的不具体啊 很难帮你想"

montos 2020-06-02 23:15:40 0 浏览量 回答数 0

回答

你这种配置就是作死的节奏啊,win2003+apache  这不是作死么,千奇百怪的问题,还不好监控,至于php5.2.X 升级到php5.3,大部分都是有问题的,要改点代码,具体咨询开发商 ###### 纯代码角度看,php5.2系列升级到5.3系列有部分函数被废弃了,需要注意测试一遍看是否有使用被废弃的函数,当然这种可能不大,但跑一遍安心。从我的经验看最大的变化是调用时传递引用被弃用,我曾经的项目就有过这个问题,但其实代码改动也不太大。基本上没什么问题,内测一遍,没问题就升吧。 ###### 逐步跟上版本节奏是没有问题的,官方有升级文档,告诉那些东西被废弃,跟着来就可以了。就怕那些长期不升级的,就比较可怕了。 我是建议一次性升级到php5.4 ######你这配置,系统不换,Apache不换,换什么都意义不大######郁闷死了。 被折腾一周了,系统肯定换不了。。。######那玩蛋啊?######说不定就是系统+Apache的原因,其他换什么都一样###### 你先瞅瞅Apache还有PHP的看看有没有相关日志把问题找出来吧,再考虑升级的事情 好久不用Apache了你根据机器的实际运行情况尝试用IfModule修改一下ThreadsPerChild、ServerLimit、MaxClients 之类的参数试试看吧。######每隔不到10分钟就有这样的日志 Wed May 28 21:33:35 2014] [notice] Child 200: Child process is running等等 Failed to start up concurrent users module!######Wed May 28 21:33:35 2014] [notice] Child 200: Child process is running [Wed May 28 21:33:35 2014] [notice] Child 200: Acquired the start mutex. [Wed May 28 21:33:35 2014] [notice] Child 200: Starting 100 worker threads. [Wed May 28 21:33:35 2014] [notice] Child 200: Listening on port 80. [Wed May 28 21:33:36 2014] [notice] Parent: child process exited with status 128 -- Restarting. [Wed May 28 21:33:37 2014] [warn] WARNING: Attempt to change ThreadLimit ignored during restart [Wed May 28 21:33:37 2014] [notice] Apache/2.0.63 (Win32) PHP/5.2.14 configured -- resuming normal operations [Wed May 28 21:33:37 2014] [notice] Server built: Jan 17 2008 22:58:29 [Wed May 28 21:33:37 2014] [notice] Parent: Created child process 5124 [Wed May 28 21:33:37 2014] [notice] Disabled use of AcceptEx() WinSock2 API Failed to start up concurrent users module! ######把Include conf/extra/httpd-mpm.conf这行打开,然后到网上搜索一下mpm大概的配置,用两天再按照你的服务器硬件配置调整###### win2003,还是使用IIS啊,不仅不Apache快很多而且稳定。不能换? 这不是完蛋的节奏。。。 ######我服务器就是用的windows2003+apache配的PHP环境,网站访问量不大每天190-350IP量,一个月手工重启一次服务器而以。可能是你配置这块没处理好,我之前用APACHE2.2与PHP几个不同版本搭配出现过不稳定现像。后来换了PHP5.4.21+APACHE2.2就很稳定了。 不过我用的就windows server2008 R2,不是2003###### 厉害啊,我的也是这配置,我一个月会定时重启一次,保证运行稳定。 从来没停过电,用的阿里云的云主机。 两年没的停过电? 我的大windows server跑了2年多了,一次没重启过######估计是服务器没配置好吧?

一枚小鲜肉帅哥 2020-05-27 20:10:49 0 浏览量 回答数 0

回答

你这种配置就是作死的节奏啊,win2003+apache  这不是作死么,千奇百怪的问题,还不好监控,至于php5.2.X 升级到php5.3,大部分都是有问题的,要改点代码,具体咨询开发商 ###### 纯代码角度看,php5.2系列升级到5.3系列有部分函数被废弃了,需要注意测试一遍看是否有使用被废弃的函数,当然这种可能不大,但跑一遍安心。从我的经验看最大的变化是“调用时传递引用被弃用.”,我曾经的项目就有过这个问题,但其实代码改动也不太大。基本上没什么问题,内测一遍,没问题就升吧。 ###### 逐步跟上版本节奏是没有问题的,官方有升级文档,告诉那些东西被废弃,跟着来就可以了。就怕那些长期不升级的,就比较可怕了。 我是建议一次性升级到php5.4 ######你这配置,系统不换,Apache不换,换什么都意义不大######郁闷死了。######回复 @YeaWind : 被折腾一周了,系统肯定换不了。。。######那玩蛋啊?######说不定就是系统+Apache的原因,其他换什么都一样###### 你先瞅瞅Apache还有PHP的看看有没有相关日志把问题找出来吧,再考虑升级的事情。 ######回复 @YeaWind : 好久不用Apache了你根据机器的实际运行情况尝试用IfModule修改一下ThreadsPerChild、ServerLimit、MaxClients 之类的参数试试看吧。######每隔不到10分钟就有这样的日志 Wed May 28 21:33:35 2014] [notice] Child 200: Child process is running等等 Failed to start up concurrent users module!######Wed May 28 21:33:35 2014] [notice] Child 200: Child process is running [Wed May 28 21:33:35 2014] [notice] Child 200: Acquired the start mutex. [Wed May 28 21:33:35 2014] [notice] Child 200: Starting 100 worker threads. [Wed May 28 21:33:35 2014] [notice] Child 200: Listening on port 80. [Wed May 28 21:33:36 2014] [notice] Parent: child process exited with status 128 -- Restarting. [Wed May 28 21:33:37 2014] [warn] WARNING: Attempt to change ThreadLimit ignored during restart [Wed May 28 21:33:37 2014] [notice] Apache/2.0.63 (Win32) PHP/5.2.14 configured -- resuming normal operations [Wed May 28 21:33:37 2014] [notice] Server built: Jan 17 2008 22:58:29 [Wed May 28 21:33:37 2014] [notice] Parent: Created child process 5124 [Wed May 28 21:33:37 2014] [notice] Disabled use of AcceptEx() WinSock2 API Failed to start up concurrent users module! ######把Include conf/extra/httpd-mpm.conf这行打开,然后到网上搜索一下mpm大概的配置,用两天再按照你的服务器硬件配置调整###### win2003,还是使用IIS啊,不仅不Apache快很多而且稳定。不能换? 这不是完蛋的节奏。。。 ######我服务器就是用的windows2003+apache配的PHP环境,网站访问量不大每天190-350IP量,一个月手工重启一次服务器而以。可能是你配置这块没处理好,我之前用APACHE2.2与PHP几个不同版本搭配出现过不稳定现像。后来换了PHP5.4.21+APACHE2.2就很稳定了。######回复 @毛毛爱开发 : 不过我用的就windows server2008 R2,不是2003###### @日 厉害啊,我的也是这配置,我一个月会定时重启一次,保证运行稳定。######回复 : 从来没停过电,用的阿里云的云主机。######

kun坤 2020-05-26 21:18:12 0 浏览量 回答数 0

问题

在ubuntu下搭建asp.netmono的运行环境

jsong 2019-12-01 21:01:04 10974 浏览量 回答数 5

回答

你这种配置就是作死的节奏啊,win2003+apache  这不是作死么,千奇百怪的问题,还不好监控,至于php5.2.X 升级到php5.3,大部分都是有问题的,要改点代码,具体咨询开发商 ###### 纯代码角度看,php5.2系列升级到5.3系列有部分函数被废弃了,需要注意测试一遍看是否有使用被废弃的函数,当然这种可能不大,但跑一遍安心。从我的经验看最大的变化是“调用时传递引用被弃用.”,我曾经的项目就有过这个问题,但其实代码改动也不太大。基本上没什么问题,内测一遍,没问题就升吧。 ###### 逐步跟上版本节奏是没有问题的,官方有升级文档,告诉那些东西被废弃,跟着来就可以了。就怕那些长期不升级的,就比较可怕了。 我是建议一次性升级到php5.4 ######你这配置,系统不换,Apache不换,换什么都意义不大######郁闷死了。######回复 @YeaWind : 被折腾一周了,系统肯定换不了。。。######那玩蛋啊?######说不定就是系统+Apache的原因,其他换什么都一样###### 你先瞅瞅Apache还有PHP的看看有没有相关日志把问题找出来吧,再考虑升级的事情。 ######回复 @YeaWind : 好久不用Apache了你根据机器的实际运行情况尝试用IfModule修改一下ThreadsPerChild、ServerLimit、MaxClients 之类的参数试试看吧。######每隔不到10分钟就有这样的日志 Wed May 28 21:33:35 2014] [notice] Child 200: Child process is running等等 Failed to start up concurrent users module!######Wed May 28 21:33:35 2014] [notice] Child 200: Child process is running [Wed May 28 21:33:35 2014] [notice] Child 200: Acquired the start mutex. [Wed May 28 21:33:35 2014] [notice] Child 200: Starting 100 worker threads. [Wed May 28 21:33:35 2014] [notice] Child 200: Listening on port 80. [Wed May 28 21:33:36 2014] [notice] Parent: child process exited with status 128 -- Restarting. [Wed May 28 21:33:37 2014] [warn] WARNING: Attempt to change ThreadLimit ignored during restart [Wed May 28 21:33:37 2014] [notice] Apache/2.0.63 (Win32) PHP/5.2.14 configured -- resuming normal operations [Wed May 28 21:33:37 2014] [notice] Server built: Jan 17 2008 22:58:29 [Wed May 28 21:33:37 2014] [notice] Parent: Created child process 5124 [Wed May 28 21:33:37 2014] [notice] Disabled use of AcceptEx() WinSock2 API Failed to start up concurrent users module! ######把Include conf/extra/httpd-mpm.conf这行打开,然后到网上搜索一下mpm大概的配置,用两天再按照你的服务器硬件配置调整###### win2003,还是使用IIS啊,不仅不Apache快很多而且稳定。不能换? 这不是完蛋的节奏。。。 ######我服务器就是用的windows2003+apache配的PHP环境,网站访问量不大每天190-350IP量,一个月手工重启一次服务器而以。可能是你配置这块没处理好,我之前用APACHE2.2与PHP几个不同版本搭配出现过不稳定现像。后来换了PHP5.4.21+APACHE2.2就很稳定了。######回复 @毛毛爱开发 : 不过我用的就windows server2008 R2,不是2003###### @日 厉害啊,我的也是这配置,我一个月会定时重启一次,保证运行稳定。######回复 @毛毛爱开发 : 从来没停过电,用的阿里云的云主机。###### @日 两年没的停过电?######我的大windows server跑了2年多了,一次没重启过######估计是服务器没配置好吧?

montos 2020-05-29 23:47:31 0 浏览量 回答数 0

回答

你这种配置就是作死的节奏啊,win2003+apache  这不是作死么,千奇百怪的问题,还不好监控,至于php5.2.X 升级到php5.3,大部分都是有问题的,要改点代码,具体咨询开发商 ###### 纯代码角度看,php5.2系列升级到5.3系列有部分函数被废弃了,需要注意测试一遍看是否有使用被废弃的函数,当然这种可能不大,但跑一遍安心。从我的经验看最大的变化是“调用时传递引用被弃用.”,我曾经的项目就有过这个问题,但其实代码改动也不太大。基本上没什么问题,内测一遍,没问题就升吧。 ###### 逐步跟上版本节奏是没有问题的,官方有升级文档,告诉那些东西被废弃,跟着来就可以了。就怕那些长期不升级的,就比较可怕了。 我是建议一次性升级到php5.4 ######你这配置,系统不换,Apache不换,换什么都意义不大######郁闷死了。######回复 @YeaWind : 被折腾一周了,系统肯定换不了。。。######那玩蛋啊?######说不定就是系统+Apache的原因,其他换什么都一样###### 你先瞅瞅Apache还有PHP的看看有没有相关日志把问题找出来吧,再考虑升级的事情。 ######回复 @YeaWind : 好久不用Apache了你根据机器的实际运行情况尝试用IfModule修改一下ThreadsPerChild、ServerLimit、MaxClients 之类的参数试试看吧。######每隔不到10分钟就有这样的日志 Wed May 28 21:33:35 2014] [notice] Child 200: Child process is running等等 Failed to start up concurrent users module!######Wed May 28 21:33:35 2014] [notice] Child 200: Child process is running [Wed May 28 21:33:35 2014] [notice] Child 200: Acquired the start mutex. [Wed May 28 21:33:35 2014] [notice] Child 200: Starting 100 worker threads. [Wed May 28 21:33:35 2014] [notice] Child 200: Listening on port 80. [Wed May 28 21:33:36 2014] [notice] Parent: child process exited with status 128 -- Restarting. [Wed May 28 21:33:37 2014] [warn] WARNING: Attempt to change ThreadLimit ignored during restart [Wed May 28 21:33:37 2014] [notice] Apache/2.0.63 (Win32) PHP/5.2.14 configured -- resuming normal operations [Wed May 28 21:33:37 2014] [notice] Server built: Jan 17 2008 22:58:29 [Wed May 28 21:33:37 2014] [notice] Parent: Created child process 5124 [Wed May 28 21:33:37 2014] [notice] Disabled use of AcceptEx() WinSock2 API Failed to start up concurrent users module! ######把Include conf/extra/httpd-mpm.conf这行打开,然后到网上搜索一下mpm大概的配置,用两天再按照你的服务器硬件配置调整###### win2003,还是使用IIS啊,不仅不Apache快很多而且稳定。不能换? 这不是完蛋的节奏。。。 ######我服务器就是用的windows2003+apache配的PHP环境,网站访问量不大每天190-350IP量,一个月手工重启一次服务器而以。可能是你配置这块没处理好,我之前用APACHE2.2与PHP几个不同版本搭配出现过不稳定现像。后来换了PHP5.4.21+APACHE2.2就很稳定了。######回复 @毛毛爱开发 : 不过我用的就windows server2008 R2,不是2003###### @日 厉害啊,我的也是这配置,我一个月会定时重启一次,保证运行稳定。######回复 @毛毛爱开发 : 从来没停过电,用的阿里云的云主机。###### @日 两年没的停过电?######我的大windows server跑了2年多了,一次没重启过######估计是服务器没配置好吧?

kun坤 2020-06-05 23:54:15 0 浏览量 回答数 0

回答

不依赖微软的库和WindowsAPI,没能试验成功!######问题已解决,谢谢。######看这篇文章,讲的很清楚(:)这是从其他地方拷贝过来的) UNICODE环境设置 在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下。 UNICODE编译设置: C/C++, Preprocessor difinitions 去除_MBCS,加_UNICODE,UNICODE 在ProjectSetting/link/output 中设置Entry为wWinMainCRTStartup 反之为MBCS(ANSI)编译。 Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 size_t strlen( const char *string ); size_t wcslen( const wchar_t *string ); size_t _mbslen( const unsigned char *string ); size_t _mbstrlen( const char *string ); 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述 PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址 PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址 BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值 3. 为什幺要使用Unicode? (1) 可以很容易地在不同语言之间进行数据交换。 (2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。 (3) 提高应用程序的运行效率。 Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那幺系统首先要将字符串转换成Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串,然后将结果返回给你的应用程序。进行这些字符串的转换需要占用系统的时间和内存。通过从头开始用Unicode来开发应用程序,就能够使你的应用程序更加有效地运行。 Windows CE 本身就是使用Unicode的一种操作系统,完全不支持ANSI Windows函数 Windows 98 只支持ANSI,只能为ANSI开发应用程序。 Microsoft公司将COM从16位Windows转换成Win32时,公司决定需要字符串的所有COM接口方法都只能接受Unicode字符串。 4. 如何编写Unicode源代码?   Microsoft公司为Unicode设计了WindowsAPI,这样,可以尽量减少代码的影响。实际上,可以编写单个源代码文件,以便使用或者不使用Unicode来对它进行编译。只需要定义两个宏(UNICODE和_UNICODE),就可以修改然后重新编译该源文件。   _UNICODE宏用于C运行期头文件,而UNICODE宏则用于Windows头文件。当编译源代码模块时,通常必须同时定义这两个宏。     5. Windows定义的Unicode数据类型有哪些?   数据类型 说明   WCHAR Unicode字符   PWSTR 指向Unicode字符串的指针   PCWSTR 指向一个恒定的Unicode字符串的指针   对应的ANSI数据类型为CHAR,LPSTR和LPCSTR。   ANSI/Unicode通用数据类型为TCHAR,PTSTR,LPCTSTR。     6. 如何对Unicode进行操作?   字符集 特性 实例   ANSI 操作函数以str开头 strcpy   Unicode 操作函数以wcs开头 wcscpy   MBCS 操作函数以_mbs开头 _mbscpy   ANSI/Unicode 操作函数以_tcs开头 _tcscpy(C运行期库)   ANSI/Unicode 操作函数以lstr开头 lstrcpy(Windows函数)   所有新的和未过时的函数在Windows2000中都同时拥有ANSI和Unicode两个版本。ANSI版本函数结尾以A表示;Unicode版本函数结尾以W表示。Windows会如下定义:   #ifdef UNICODE   #define CreateWindowEx CreateWindowExW   #else   #define CreateWindowEx CreateWindowExA   #endif // !UNICODE     7. 如何表示Unicode字符串常量?   字符集 实例   ANSI “string”   Unicode L“string”   ANSI/Unicode T(“string”)或_TEXT(“string”)   if( szError[0] == _TEXT(‘J’) ){ }     8. 为什幺应当尽量使用操作系统函数?   这将有助于稍稍提高应用程序的运行性能,因为操作系统字符串函数常常被大型应用程序比如操作系统的外壳进程Explorer.exe所使用。由于这些函数使用得很多,因此,在应用程序运行时,它们可能已经被装入RAM。   如:StrCat,StrChr,StrCmp和StrCpy等。     9. 如何编写符合ANSI和Unicode的应用程序?   (1) 将文本串视为字符数组,而不是chars数组或字节数组。   (2) 将通用数据类型(如TCHAR和PTSTR)用于文本字符和字符串。   (3) 将显式数据类型(如BYTE和PBYTE)用于字节、字节指针和数据缓存。   (4) 将TEXT宏用于原义字符和字符串。   (5) 执行全局性替换(例如用PTSTR替换PSTR)。   (6) 修改字符串运算问题。例如函数通常希望在字符中传递一个缓存的大小,而不是字节。这意味着不应该传递sizeof(szBuffer),而应该传递(sizeof(szBuffer)/sizeof(TCHAR)。另外,如果需要为字符串分配一个内存块,并且拥有该字符串中的字符数目,那幺请记住要按字节来分配内存。这就是说,应该调用   malloc(nCharacters *sizeof(TCHAR)),而不是调用malloc(nCharacters)。     10. 如何对字符串进行有选择的比较?   通过调用CompareString来实现。   int CompareString(    LCID Locale, // locale identifier DWORD dwCmpFlags, // comparison-style options LPCTSTR lpString1, // pointer to first string int cchCount1, // size, in bytes or characters, of first string LPCTSTR lpString2, // pointer to second string int cchCount2 // size, in bytes or characters, of second string   ); Locale 本地比较的定义    LOCALE_USER_DEFAULT    LOCALE_SYSTEM_DEFAULT     标志 含义   NORM_IGNORECASE 忽略字母的大小写   NORM_IGNOREKANATYPE 不区分平假名与片假名字符   NORM_IGNORENONSPACE 忽略无间隔字符   NORM_IGNORESYMBOLS 忽略符号   NORM_IGNOREWIDTH 不区分单字节字符与作为双字节字符的同一个字符   SORT_STRINGSORT 将标点符号作为普通符号来处理     11. 如何判断一个文本文件是ANSI还是Unicode?   判断如果文本文件的开头两个字节是0xFF和0xFE,那幺就是Unicode,否则是ANSI。     12. 如何判断一段字符串是ANSI还是Unicode?   用IsTextUnicode进行判断。IsTextUnicode使用一系列统计方法和定性方法,以便猜测缓存的内容。由于这不是一种确切的科学方法,因此 IsTextUnicode有可能返回不正确的结果。     13. 如何在Unicode与ANSI之间转换字符串?   Windows函数MultiByteToWideChar用于将多字节字符串转换成宽字符串;函数WideCharToMultiByte将宽字符串转换成等价的多字节字符串。     14. Unicode和DBCS之间的区别    Unicode使用(特别在C程序设计语言环境里)“宽字符集”。「Unicode中的每个字符都是16位宽而不是8位宽。」在Unicode中,没有单单使用8位数值的意义存在。相比之下,在“双位组字符集”中我们仍然处理8位数值。有些位组自身定义字符,而某些位组则显示需要和另一个位组共同定义一个字符。     处理DBCS字符串非常杂乱,但是处理Unicode文字则像处理有秩序的文字。您也许会高兴地知道前128个Unicode字符(16位代码从0x0000到0x007F)就是ASCII字符,而接下来的128个Unicode字符(代码从0x0080到0x00FF)是ISO 8859-1对ASCII的扩展。Unicode中不同部分的字符都同样基于现有的标准。这是为了便于转换。希腊字母表使用从0x0370到0x03FF的代码,斯拉夫语使用从0x0400到0x04FF的代码,美国使用从0x0530到0x058F的代码,希伯来语使用从0x0590到0x05FF的代码。中国、日本和韩国的象形文字(总称为CJK)占用了从0x3000到0x9FFF的代码。Unicode的最大好处是这里只有一个字符集,没有一点含糊。         15.衍生标准     Unicode是一个标准。UTF-8是其概念上的子集,UTF-8是具体的编码标准。而UNICODE是所有想达到世界统一编码标准的标准。UTF-8标准就是Unicode(ISO10646)标准的一种变形方式,      UTF的全称是:Unicode/UCS Transformation Format,其实有两种UTF,一种是UTF-8,一种是UTF-16,      不过UTF-16使用较少,其对应关系如下:      在Unicode中编码为 0000 - 007F 的 UTF-8 中编码形式为: 0xxxxxxx      在Unicode中编码为 0080 - 07FF 的 UTF-8 中编码形式为: 110xxxxx 10xxxxxx      在Unicode中编码为 0000 - 007F 的 UTF-8 中编码形式为: 1110xxxx 10xxxxxx 10xxxxxx           utf-8是unicode的一个新的编码标准,其实unicode有过好几个标准.我们知道一直以来使用的unicode字符内码都是16位,它实际上还不能把全世界的所有字符编在一个平面系统,比如中国的藏文等小语种,所以utf-8扩展到了32位,也就是说理论在utf-8中可容纳二的三十二次方个字符. UNICODE的思想就是想把所有的字符统一编码,实现一个统一的标准.big5、gb都是独立的字符集,这也叫做远东字符集,把它拿到德文版的WINDOWS上可能将会引起字符编码的冲突....早期的WINDOWS默认的字符集是ANSI.notepad中输入的汉字是本地编码,但在NT/2000内部是可以直接支持UNICODE的。notepad.exe在WIN95和98中都是ANSI字符,在NT中则是UNICODE.ANSI和UNICODE可以方便的实现对应映射,也就是转换 ASCII是8位范围内的字符集,对于范围之外的字符如汉字它是无法表达的。unicode是16位范围内的字符集,对于不同地区的字符分区分配,unicode是多个IT巨头共同制定的字符编码标准。如果在unicode环境下比如WINDOWS NT上,一个字符占两字节16位,而在ANSI环境下如WINDOWS98下一个字符占一个字节8位.Unicode字符是16位宽,最多允许65,535字符,数据类型被称为WCHAR。       对于已有的ANSI字符,unicode简单的将其扩展为16位:比如ANSI"A"=0x43,则对应的UNICODE为       "A"= 0x0043        而ASCII用七存放128个字符,ASCII是一个真正的美国标准,所以它不能满足其他国家的需要,例如斯拉夫语的字母和汉字于是出现了Windows ANSI字符集,是一种扩展的ASCII码,用8位存放字符,低128位仍然存放原来的ASCII码,        而高128位加入了希腊字母等        if def UNICODE        TCHAR = wchar        else        TCHAR = char        你需要在Project\Settings\C/C++\Preprocesser definitions中添加UNICODE和_UNICODE        UINCODE,_UNICODE都要定义。不定义_UNICODE的话,用SetText(HWND,LPCTSTR),将被解释为SetTextA(HWND,LPTSTR),这时API将把你给的Unicode字符串看作ANSI字符串,显示乱码。因为windows API是已经编译好存在于dll中的,由于不管UNICODE还是ANSI字符串,都被看作一段buffer,如"0B A3 00 35 24 3C 00 00"如果按ANSI读,因为ANSI字串是以'\0'结束的,所以只能读到两字节"0B A3 \0",如果按UNICODE读,将完整的读到'\0\0'结束。         由于UNICODE没有额外的指示位,所以系统必须知道你提供的字串是哪种格式。此外,UNICODE好象是ANSI C++规定的,_UNICODE是windows SDK提供的。如果不编写windows程序,可以只定义UNICODE。 开发过程:         围绕着文件读写、字符串处理展开。文件主要有两种:.txt和.ini文件        在unicode和非unicode环境下字符串做不同处理的,那么需要参考以上9,10两条,以适应不同环境得字符串处理要求。         对文件读写也一样。只要调用相关接口函数时,参数中的字符串前都加上_TEXT等相关宏。如果写成的那个文件需要是unicode格式保存的,那么在创建文件时需要加入一个字节头。          CFile file;           WCHAR szwBuffer[128];           WCHAR *pszUnicode = L"Unicode string\n"; // unicode string           CHAR pszAnsi = "Ansi string\n"; // ansi string           WORD wSignature = 0xFEFF;           file.Open(TEXT("Test.txt"), CFile::modeCreate|CFile::modeWrite);           file.Write(&wSignature, 2);           file.Write(pszUnicode, lstrlenW(pszUnicode) * sizeof(WCHAR));           // explicitly use lstrlenW function           MultiByteToWideChar(CP_ACP, 0, pszAnsi, -1, szwBuffer, 128);           file.Write(szwBuffer, lstrlenW(szwBuffer) * sizeof(WCHAR));            file.Close();            //以上这段代码在unicode和非unicode环境下都有效。这里显式的指明用Unicode来进行操作。           在非unicode环境下,缺省调用的都是ANSI格式的字符串,此时TCHAR转换为CHAR类型的,除非显式定义WCHAR。所以在这个环境下,如果读取unicode文件,那么首先需要移动2个字节,然后读取得字符串需要用MultiByteToWideChar来转换,转换后字符串信息才代表unicode数据。          在unicode环境下,缺省调用得都是unicode格式得字符串,也就是宽字符,此时TCHAR转换为WCHAR,相关得API函数也都调用宽字符类型的函数。此时读取unicode文件也和上面一样,但是读取得数据是WCHAR的,如果要转换成ANSI格式,需要调用WideCharToMultiByte。如果读取ANSI的,则不用移动两个字节,直接读取然后视需要转换即可。                    某些语言(如韩语)必须在unicode环境下才能显示,这种情况下,在非unicode环境下开发,就算用字符串函数转换也不能达到显示文字的目的,因为此时调用得API函数是用ANSI的(虽然底层都是用UNICODE处理但是处理结果是按照程序员调用的API来显示的)。所以必须用unicode来开发。###### 用WideCharToMultiByte这个API: #include <stdio.h> #include <windows.h> int main() { FILE fp; wchar_t utf[1000], *p = utf; char ansi[2000]; fp = _wfopen(L"C:\1.txt", L"rb"); while(!feof(fp)) fread(p++, 1, 2, fp); *--p = L'\0'; fclose(fp); // utf+1剔除UTf-16标记 WideCharToMultiByte(CP_ACP, 0, utf + 1, -1, ansi, sizeof(ansi), NULL, NULL); puts(ansi); } ###### 楼上的给个链接就好,不用大篇幅复制。 卤煮的意思是说把“\u6C49\u5B57” 这个ASCII字符串转成两个汉字对吧~ ######不用别人的库,查unicode编码表?lz解决了说说方法呀######C++没解决,后来这个模块改用C#写了。###### 按二进制读,先读出0xFF 0xFE,后面数据的两个字节表示一个字,自己想办法读到wstring中 显示,用API的话,一个wcstombs ,一个WideCharToMultiByte 不用API的话自己查表,嵌入式程序可以查表,x86程序完全没那个必要 ###### 干嘛不用std::wstring ###### 用std::wstring吧,自己没有试过……,你可以去尝试下

kun坤 2020-06-07 13:49:51 0 浏览量 回答数 0

问题

windows下配置mysql集群:配置报错 

kun坤 2020-06-02 16:42:46 0 浏览量 回答数 1

问题

windows下配置mysql集群 :报错

kun坤 2020-06-14 17:56:02 0 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 SSL证书 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 2020中国云原生 阿里云云栖号