首页 > 编程技术 > php

如何用PHP调用自己编写的COM组件?

发布时间:2016-11-25 17:35

首先写ActiveX Dll:
新建一个VB6工程,ActiveX Dll将工程命名为P_test,类名为c_test ,类的文件内容如下:

Option Explicit
Private MyscriptingContext As scriptingContext
Private MyApplication As Application
Private MyRequest As Request Private MyResponse As Response
Private MyServer As Server
Private MySession As Session Public

Sub OnStartPage(PassedscriptingContext As scriptingContext)
Set MyscriptingContext = PassedscriptingContext
Set MyApplication = MyscriptingContext.Application
Set MyRequest = MyscriptingContext.Request
Set MyResponse = MyscriptingContext.Response
Set MyServer = MyscriptingContext.Server
Set MySession = MyscriptingContext.Session
End Sub

Public Sub OnEndPage()
Set MyscriptingContext = Nothing
Set MyApplication = Nothing
Set MyRequest = Nothing
Set MyResponse = Nothing
Set MyServer = Nothing
Set MySession = Nothing
End Sub

Public Function Test_Number(num) As Variant
If num 0 Then Get_Number_Attrib = 1
If num = 0 Then Get_Number_Attrib = 0
End Function

编译生成p_test.dll文件

注册

提示符下运行:regsvr32 p_test.dll

编写php文件,test.php4代码如下:

<?php
$b=new COM("p_test.c_test");
$a=$b->Test_Number(-454);
echo $a;
?>

可能碰到的问题是,编译工程时通不过,要将Microsoft Active Server Pages Object Library引用进来,具体实现"Project->References"找到改库,并勾上 。

之前曾经一直使用自己定义的数字格式化方法,原来PHP一直有个数字格式化函数的,呵呵~
例如,echo number_format(285266237);
可以输出 285,266,237
另外假如需要格式化文件字节大小,下面的方法可以借鉴:
function byte_format($input, $dec=0)
{
$prefix_arr = array(" B", "K", "M", "G", "T");
$value = round($input, $dec);
$i=0;
while ($value>1024)
{
$value /= 1024;
$i ;
}
$return_str = round($value, $dec).$prefix_arr[$i];
return $return_str;
}
echo byte_format(285266237);
显示结果为 272M

用PHP实现"等待指定的时间,然后再跳转到指定页面".
也就是用php实现和HTML中的
一样的效果。

<?
/**
@title:PHP定时跳转
@功能:等待指定的时间,然后再跳转到指定页面(代替html meta方式)
*/
header("refresh:3;url=http://www.etoow.com");

print('正在加载,请稍等...<br>三秒后自动跳转~~~');


/*
补充说明:
若等待时间为0,则与header("location:")等效。
*/

?>

虚拟主机设置
<VirtualHost 127.0.10.10>
ServerAdmin webmaster@hostmachine.com
DocumentRoot /www/virtual.com/htdocs
ServerName www.virtual.com
UserDir /www/virtual.com/htdocs
ScriptAlias /cgi-bin/ /www/virtual.com/cgi-bin/
ErrorLog /www/virtual.com/logs/error_log
CustomLog /www/virtual.com/logs/access_log common

目录设置
<Directory /www/virtual.com/htdocs>
# 对该虚拟主机设置是否使用php3
php3_engine On
# 设置php3出错信息的调试级别
php3_error_reporting 1
# 设置是否记录php3出错日志
php3_log_errors On
# 设置php3的出错日志文件
php3_error_log /www/virtual.com/logs/php3_error_log
# 设置一个php3线程的最长存活时间
php3_max_execution_time 180
# 设置用户临时上载目录
php3_upload_tmp_dir /www/virtual.com/htdocs/tmp
# 设置包含头文件
php3_include_path /www/virtual.com/htdocs/include

可执行目录设置

Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

$ftp_server = "*.*.*.*";
$ftp_user = "lu";
$ftp_pass = "love you";

// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);

if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
exit;
} else {
echo "Connected to $ftp_server, for user $ftp_user_name";
}

// try to login
$filename=date('Ymd').".xml";
$source_file="/usr/local/IVR/sendwireless/xml/data/".$filename; //源地址
echo $source_file;
$destination_file="/ITC/admin/logstat/ftplog/".$filename; //目标地址
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY) or die("Couldn't connect to $ftp_server");
ftp_quit($conn_id);

if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}
ftp_close($conn_id);

标签:[!--infotagslink--]

您可能感兴趣的文章: