认真读懂php.exe是如何启动php4st.dll并向其传递数据的代码就知道该如何做了
解决方案 »
- 帮我看看这个根据主机头来显示内容应该怎么修改
- MSSQL 语句中SELECT * FROM tb_user WHERE id in(".$_POST['bb'].")可以获得2个以上的传值。MYSQL 中要怎么写??
- 向各位请教怎样能在执行sql语句有错误时能同时把那句sql写进phperror.log?
- 我在进入phpMyAdmin时,出现如下提示信息
- 数据库查询显示问题?
- 请教高手,用PHP写关于网络、服务器监控的程序,讨论一下!!
- 请问一下如何双击弹出一个层并可以移动
- 如何查找字符串中中文字符所在的位置?
- PHP与SQL Server的问题
- zendstudio12.5在线成功安装apatana studio3 ,没有apatana html editor,等
- 本地运行php 遇到文件夹不可写的问题!
- 请教一个问题???
vb 功能弱,所以才 让php脚本来执行某些功能, c/c++ 为什么还要用 php 来实现
如果C能执行php程序。那么C的程序可以动态改变执行状态。
楼主,我发现了一个可以解释了。
把php_win32std.dll复制到c:\php\extensions
就ok了
embed_php.exe info 将输出phpinfo()所有信息
embed_php.exe env 将出来环境变量
那么有没有办法,可以编译成 dll 供其它语言调用, 可以找找看。
有结果的话 ,即各告诉我一下,
确实,php 的一些系统函数,要自己来实现的话,很麻烦,而且别的语言里面都没有。
{
char *php_code = "echo \"Hello, phpteam!\\n\";"; PHP_EMBED_START_BLOCK(argc, argv);
zend_eval_string(php_code, NULL, "My PHP code" TSRMLS_CC);
PHP_EMBED_END_BLOCK(); return 0;
}其中变量php_code就是你的PHP代码,"My PHP Code"只是一个标识,可任意更改。
编译的时候连接php4embed.lib即可。
所以现在的问题是,能否将php的dll的输出重定向到我的缓冲区(一块内存)中。不知
各位有好的方法吗,谢谢!
放入到我的缓冲区中?谢谢。
第一种:可以参考PHP中Output Buffer模块的代码。
第二种:输出重定向到文件,然后在你的DLL里调用,当然效率不及第一种高!
起初我使用dup,dup2等函数和临时文件,将标准输出重定向到临时文件中。这种方法
在Win32 console应用程序下工作的很好。但是我转到GUI(MFC)应用程序下,就无法实现
重定向。
我也觉得重定向是一个比较笨的方法,php肯定提供有更好的办法。但是我还是不知道
该从哪儿入手。您能具体解释一下吗?谢谢。
zend_eval_string(php_code, NULL, "My PHP code" TSRMLS_CC);
PHP_EMBED_END_BLOCK();
应该从这里直接取得脚本中的变量。
zend应该提供了一些api的
在你的c程序中如何取得php函数的返回值?或是说你如何读取一个php变量的值?
后者应该比前者困难一些你首先应把重点放在ob_get_contents()函数上。只要你能得到这个函数的返回值,那么一切问题都解决了。
即便可能需要对该函数进行改造,但也就是一个函数而已。况且还可以根据他声明一个新函数,而不改变原代码。
Zend Timeout Window:......应用程序错误。 这是什么原因? 调用php的代码如下:
PHP_EMBED_START_BLOCK(argc, argv);
zend_eval_string(php_code, NULL, "My PHP code" TSRMLS_CC);
PHP_EMBED_END_BLOCK();
max_execution_time = 0;
php.ini-recommended 两个文本文件,但是没有php.ini文件。 我看了一下这两个文件,确实设置都是:max_execution_time = 30; 如果是30秒的话,我的应用程序调用它的过程我觉得
挺快的,不会超过1秒。 您看是否是这个问题呢?
但是经常出现异常终止的情况,异常终止的标题:Zend timetout window. 然后整个
应用程序异常退出。
问题在哪儿呢? 我快疯了 :)