佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: haryewkun

你们投资那一种网页编程语言?(ASP/JSP/PHP/OTHER)

[复制链接]
发表于 11-12-2004 01:40 AM | 显示全部楼层
ticky 于 11-12-2004 12:23 AM  说 :
請問各路英雄,

所謂的resource是不是server 的ram等等???
因, 小弟在寫PHP時,有一個query在server run 的時候,
顯得很慢,是不是server符合不了?
我的query inner join table 共有5個table,
record只有1000 ...


把你的 table structure 和 sql 放上来看看.
回复

使用道具 举报


ADVERTISEMENT

发表于 11-12-2004 02:27 AM | 显示全部楼层
CREATE TABLE material (
  mat_id bigint(20) NOT NULL auto_increment,
  mat_class varchar(255) NOT NULL default '',
  date_created datetime default NULL
) TYPE=MyISAM;

CREATE TABLE spec (
  spec_id bigint(20) NOT NULL auto_increment,
  mat_id bigint(20) NOT NULL default '0',
  mat_spec varchar(255) NOT NULL default '',
  PRIMARY KEY  (spec_id),  
) TYPE=MyISAM;

CREATE TABLE table1 (
  id bigint(20) NOT NULL auto_increment,
  proj_id varchar(50) NOT NULL default '',
  spec_id bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

CREATE TABLE table2(
  id bigint(20) NOT NULL auto_increment,
  f_table1 bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

CREATE TABLE table3 (
  id bigint(20) NOT NULL auto_increment,
  f_table2 bigint(20) NOT NULL default '0',
  purc_qty float NOT NULL default '0',
  unit_price varchar(100) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

CREATE TABLE table4 (                                       
  id bigint(50) NOT NULL auto_increment,
  f_table3 bigint(20) NOT NULL default '0',
  do_qty float NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

SELECT material.mat_id, spec.mat_id, spec.spec_id, table1.spec_id, table1.proj_id, table1.id, table2.f_table1, table2.id, table3.id, table3.f_table2 FROM material, spec, table1, table2,table3 WHERE material.mat_id = spec.mat_id AND spec.spec_id=table1.spec_id AND table1.id = table2.f_table1 AND table2.id = table3.f_table2 AND table1.proj_id='$var';
if num_rows{
        Get purc_qty from table3 ($purc_qty = purc_qty)
        $var = table3.id;
        SELECT * FROM table4 WHERE f_table3 = '$var';
        if num_rows{
                Get do_qty from table4 ($total_do_qty += do_qty)
        }
        if($purc_qty != $total_do_qty){
                echo "The Material Not Fully Deliveried Yet";
        }
}
謝謝你的幫忙,希望你懂我要表達的意思.
Inner Join, Left Join, Right Join, Closs Join 和其他的 Join 有甚麼分別?

[ Last edited by ticky on 11-12-2004 at 02:33 AM ]
回复

使用道具 举报

发表于 11-12-2004 02:43 AM | 显示全部楼层
对不起... 看了有点头昏脑涨...
你在写 sql... 还是 php + sql? 里面到底用了几个 sql 呢?
还有... 你的 table 也许需要 normalize ... 看到似乎有好几个 table 可以合起来.

回复

使用道具 举报

发表于 11-12-2004 02:55 AM | 显示全部楼层
哈哈, 對, 我是用PHP + MySQL 的,
不,他們不能合起来, 因從個別的Table有不同的Data,
不好意思,Table 已被我簡化了.

Inner Join, Left Join, Right Join, Closs Join 和其他的 Join 有甚麼分別?
謝謝
回复

使用道具 举报

发表于 12-12-2004 12:40 AM | 显示全部楼层
ticky 于 11-12-2004 02:55 AM  说 :
哈哈, 對, 我是用PHP + MySQL 的,
不,他們不能合起来, 因從個別的Table有不同的Data,
不好意思,Table 已被我簡化了.

Inner Join, Left Join, Right Join, Closs Join 和其他的 Join 有甚麼分別?
謝謝


Inner join 需要最多的 processing power,你 join 越多 table 就越慢。

Left join, right join 需要少一点的 processing power,会快很多。

差别就是...

Inner join 只选出所有 table 里面都符合条件的资料,这样选,table 越多当然要选越久才能出来。

Left join, right join 是以左边(右边)的 table 的资料为准,来做 matching。Database 只要从头到尾 parse 一次,就选完了,所以很快。
回复

使用道具 举报

发表于 12-12-2004 01:09 AM | 显示全部楼层
ticky 于 11-12-2004 02:55 AM  说 :
哈哈, 對, 我是用PHP + MySQL 的,
不,他們不能合起来, 因從個別的Table有不同的Data,
不好意思,Table 已被我簡化了.

Inner Join, Left Join, Right Join, Closs Join 和其他的 Join 有甚麼分別?
謝謝


老兄...

你把你的 code 搀杂 php + mysql 写成这样...
老实说我实在不太明白你写什么...

能不能直接把你的 code 放上来就好?
回复

使用道具 举报

Follow Us
发表于 12-12-2004 02:30 AM | 显示全部楼层
那如果我要以 Table1 的资料为准的話,而我用 "left join"的話,
是不是 等于, Table1 應該在左邊?

基于我Client 所為的 "rivacy", 我相當的抱歉. 他們不讓我完全的"公佈"code.
他們動不動就說一堆理由.這個又那個.讓我也覺得不爽.

我試試用Left Join, 看看效果如何.
謝謝你的好意,也讓我收益不少.

[ Last edited by ticky on 12-12-2004 at 02:37 AM ]
回复

使用道具 举报

发表于 18-12-2004 12:32 PM | 显示全部楼层
ticky 于 12-12-2004 02:30 AM  说 :
那如果我要以 Table1 的资料为准的話,而我用 "left join"的話,
是不是 等于, Table1 應該在左邊?

基于我Client 所為的 "rivacy", 我相當的抱歉. 他們不讓我完全的"公佈"cod ...

其实很容易,用数学的SET概念来想,
假如有两个SET,甲、已。

画两个圈来代表他们,两个圈都要互相交叉(intersect)

inner join 就是两个圈的共同交叉点。

left outer join 就是甲圈的全部及包括已圈与甲圈的交叉部分。
right呢,当然是相反啦。
回复

使用道具 举报


ADVERTISEMENT

发表于 29-12-2004 01:00 PM | 显示全部楼层
以前使用JSP和Servlet. 不过最近迷上了PowerBuilder+EAServer.
回复

使用道具 举报

发表于 4-1-2005 10:42 AM | 显示全部楼层
用 JSP2.0 EL, JSTL, Struct + JSP......
回复

使用道具 举报

发表于 4-1-2005 10:42 PM | 显示全部楼层
PHP....萬歲........
純粹個人意見...
回复

使用道具 举报

发表于 9-1-2005 03:18 PM | 显示全部楼层
sengkin 于 4-1-2005 10:42 AM  说 :
用 JSP2.0 EL, JSTL, Struct + JSP......


...你说的是struts吗?
回复

使用道具 举报

发表于 9-1-2005 03:20 PM | 显示全部楼层
我最近用 spring + hibernate..
回复

使用道具 举报

发表于 17-1-2005 01:13 AM | 显示全部楼层
goatstudio 于 1-12-2004 18:39  说 :

虽说 PHP 胜在快, 但也太轻巧了, 对物件导向支持不完善, 对资料库支持不完善, 无法承受过于复杂的逻辑运作... 这些在 J2EE/.NET 已经很好的解决了... 当然, 也就赔上了速度, 还有简易度.

虽然如此, 目前的 PHP 是这样... 但至于以后如何, 将很难说... 当然还是希望看到 PHP 日渐强大的.


我们已在“以后”了!
回复

使用道具 举报

发表于 1-3-2005 09:35 AM | 显示全部楼层
perl不错,php也很好。
回复

使用道具 举报

发表于 1-3-2005 11:52 AM | 显示全部楼层
来自中国Linux论坛。。。

让PHP支持大型项目-构建JSP、PHP与JAVA融为一体的开发环境

前言
本文介绍了融JSP、PHP和JAVA于一炉的开发环境的建立,为了适合大多数初学者的需求,很多步骤都是采用比较方便的办法,力求简单明了。一般来说,没有特别需求的软件,我都是采用RPM的方式安装。如果你有优化配置、安全考虑等特殊需求,请参考相关的文章进行配置。
在本文中,Apache以DSO模式安装,PHP实现了JAVA组件的支持,使得我们在进行大型项目开发的时候,可以选择PHP作为前端脚本语言,调用JAVA组件实现底层和企业级的应用。


一.系统环境
1.初始安装
防火墙开放接口:21,22,80,2401,8009,10000,eth0
Redhat Linux 9.0
Development Tools
Network Servers
VSFtp
CVS-1.11.2-10
MySQL 3.23.54

2.包安装
JDK 1.4.2_04
下载地址:http://www.netshine.com.cn/linux/j2sdk-1_4_2_04-linux-i586.rpm
Tomcat 5.0.19
下载地址:http://www.netshine.com.cn/linux/jakarta-tomcat-5.0.19.tar.gz

3.脚本安装
Webmin 1.110
下载地址:http://www.netshine.com.cn/linux/webmin-1.110.tar.gz
ZendOptimizer 2.5.1
下载地址:http://www.netshine.com.cn/linux ... glibc21-i386.tar.gz

4.手工编译
Apache 2.0.49
下载地址:http://www.netshine.com.cn/linux/httpd-2.0.49.tar.gz
PHP 4.3.5
下载地址:http://www.netshine.com.cn/linux/php-4.3.5.tar.gz
JK 2-2.0.4
下载地址:http://www.netshine.com.cn/linux ... -src-current.tar.gz

5.客户机环境
Windows XP Professional
Absolute Telnet 3.0
Zend Encoder
Macromedia Dreamweaver MX 2004
Borland JBuilder 9 Enterprise
WinCVS 1.3
下载地址:http://www.netshine.com.cn/linux/WinCvs13b17.zip

[ Last edited by microSys on 1-3-2005 at 11:55 AM ]
回复

使用道具 举报


ADVERTISEMENT

发表于 1-3-2005 11:53 AM | 显示全部楼层
二.系统安装
启动Linux安装光盘,安装基本系统:FTP、开发工具和MySQL3.23.54。如果你是手工编译安装MySQL,要记得以后在编译PHP等程序时要指明MySQL的具体路径,否则会因找不到路径而导致编译出错。

三.安装webmin1.110
用Webmin来配置系统,傻瓜化,可以节省不少力气,所以一般我都先安装它。安装过程很简单,执行setup.sh脚本后照提示一步一步来就可以了。
-----------------------------------------------------------------------------------------------
# cd webmin*
# ./setup.sh
-----------------------------------------------------------------------------------------------

四.安装JDK1.4.2
1.编辑如下三个文件,没有指明全路径的放在你自己的home目录就可以。
/etc/profile
JAVA_HOME=/usr/java/j2sdk1.4.2_04
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
CVSROOT=/usr/local/cvsroot
PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH CVSROOT PATH

/etc/ld.so.conf
/usr/java/j2sdk1.4.2_04/jre/lib/i386
/usr/java/j2sdk1.4.2_04/jre/lib/i386/server

HelloWorld.java
class HelloWorld
{
public static void main(String[] args)
{
//本文件测试Java环境是否安装成功。
System.out.println("Hello World!");
}
}

2.执行以下命令:
-----------------------------------------------------------------------------------------------
# rpm -ivh j2sdk*.rpm //安装JDK包。
# source /etc/profile //重载profile环境。
# ldconfig //创建动态链接库缓存文件。
# javac -d . HelloWorld.java //编译测试文件。
# java HelloWorld //运行程序测试安装是否成功。
-----------------------------------------------------------------------------------------------

五.安装Apache
-----------------------------------------------------------------------------------------------
# tar xvzf httpd* //解压源码包。
# cd httpd* //进入安装目录。
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite
# make;make install //编译并安装。
-----------------------------------------------------------------------------------------------
说明:
--enable-so选项:让Apache可以支持DSO模式,注意,我们在这里采用的是Apache2.0的语法。如果你的Apache是1.3版本,应改为--enable-module=so。
--enable-mods-shared=most选项:告诉编译器将所有标准模块都编译为DSO模块。你要是用的是Apache1.3,改为--enable-shared=max就可以。
--enable-rewrite选项:支持地址重写功能,使用1.3版本的朋友请将它改为--enable-module=rewrite。
回复

使用道具 举报

发表于 1-3-2005 11:54 AM | 显示全部楼层
六.编译安装PHP
1.执行命令
-----------------------------------------------------------------------------------------------
#tar xvzf php* //解压源码包
#cd php* //进入PHP安装命令
#./configure --prefix=/usr/local/php --with-mysql --with-apxs2=/usr/local/apache/bin/apxs --with-java=/usr/java/j2sdk1.4.2_04
#make;make install //编译并安装
#cp php.ini-dist /usr/local/php/lib/php.ini //复制php配置文件
#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 //extensions目录
#ln -s java.so libphp_java.so //建立连接,忘记了会出错哦
#cd Zend* //进入ZendOptimizer目录
#./install //安装PHP加速器
-----------------------------------------------------------------------------------------------
说明:
--with-apxs2=/usr/local/apache/bin/apxs是Apache2的语法,1.3版本的用户请使用--with-apxs=/usr/local/apache/bin/apxs。

2.编辑下面三个文件
/usr/local/apache/conf/httpd.conf
LoadModule php4_module modules/libphp4.so

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

AddDefaultCharset gb2312

/usr/local/apache/htdocs/test.php
<?php
//本程序测试PHP的JAVA环境是否可用,代码是从http://www.php.net/manual/en/ref.java.php摘录下来的。

// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');

// demonstrate property access
echo 'Java version=' . $system->getProperty('java.version') . '<br />';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
echo 'OS=' . $system->getProperty('os.name') . ' ' .
$system->getProperty('os.version') . ' on ' .
$system->getProperty('os.arch') . ' <br />';

// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo $formatter->format(new Java('java.util.Date'));
?>

/usr/local/php/lib/php.ini
register_globals=On
[Java]
java.class.path=/usr/local/php/lib/php/php_java.jar:/home/jim/myclass
java.home=/usr/java/j2sdk1.4.2_04
java.library=/usr/java/j2sdk1.4.2_04/jre/lib/i386/libjava.so
java.library.path=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension=libphp_java.so

注意:
(1).如果你刚刚从以前老版本的PHP转换到新版本,可能会发现你的PHP程序很多都不能用了。别紧张!把register_globals打开就一切正常啦!这是因为老版本的PHP,它的register_globals默认是开着的,而新版本,却把它关了的缘故。
(2)./home/jim/myclass是我存放JAVA组件的路径,你可以根据实际情况修改,但是为了安全起见,可不要放在web目录下哦。

七.安装Tomcat
1.执行以下命令
-----------------------------------------------------------------------------------------------
#cd *jk2*/jk/native2 //进入连接器编译目录
#./buildconf.sh //运行配置脚本
#./configure --with-apxs2=/usr/local/apache/bin/apxs --enable-jni --enable-EAPI
#make //编译模块
#cd ~jim/src/*jk2*/jk/build/jk2/apache2 //进入编译好模块的目录
#cp *.so /usr/local/apache/modules/ //将模块拷贝到Apache目录
#cp -R jakarta-tomcat-5.0.19 /usr/local/tomcat //安装Tomcat
#touch /usr/local/apache/logs/shm.file //建立共享内存文件
-----------------------------------------------------------------------------------------------
我刚开始安装Tomcat的时候,总是不成功,后来我跑到Apache的网站,看了一份只有两页的英文说明,很快就把它配好了。我发现国内的作者总是喜欢故弄玄虚,把本来很简单的东西搞得很复杂,让人家看不懂,以显示自己高明。

2.编辑以下文件
/usr/local/apache/conf/httpd.conf
LoadModule jk2_module modules/mod_jk2.so
JkSet config.file /usr/local/apache/conf/workers2.properties
DocumentRoot "/usr/local/tomcat/webapps"
<Directory "/usr/local/tomcat/webapps">

/usr/local/tomcat/webapps/jsp-examples/for.jsp
<%
int i;
for(i=1;i<100;i++)
{
out.println("<h" + i + ">Hello World!</h" + i + ">");
}
%>

/usr/local/tomcat/conf/jk2.propertie
handler.list=request,container,channelSocket
channelSocket.port=8009
channelSocket.address=127.0.0.1
channelSocket.maxPort=port+10

/usr/local/apache/conf/workers2.properties
[shm]
file=/usr/local/apache/logs/shm.file
size=1048576
[workerEnv:]
info=Global server options
timing=1
debug=0
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
[uri:/*.jsp]
worker=ajp13:localhost:8009

/etc/rc.d/init.d/httpd
#!/bin/sh

# chkconfig:2345 92 12
# description:Starting Apache and Tomcat Server

LD_LIBRARY_PATH=/usr/java/j2sdk1.4.2_04/jre/lib/i386:/usr/java/j2sdk1.4.2_04/jre/lib/i386/server
export LD_LIBRARY_PATH

CATALINA_BASE=/usr/local/tomcat
export CATALINA_BASE

CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME

APACHE_HOME=/usr/local/apache
export APACHE_HOME

JAVA_HOME=/usr/java/j2sdk1.4.2_04
export JAVA_HOME

PROFILEDIR=/var/run

case "$1" in
start)

if [ -f $PROFILEDIR/Tomcat5_Apache2 ]; then
echo "Running Tomcat5_Apache2"
else
if [ -f $CATALINA_HOME/bin/startup.sh ]; then
if [ -f $APACHE_HOME/bin/apachectl ]; then
"$CATALINA_HOME/bin/startup.sh"
echo "Startting Tomcat5"
sleep 3
echo "Startting Apache2"
$APACHE_HOME/bin/apachectl start
echo "."
touch $PROFILEDIR/Tomcat5_Apache2
else
echo "Apache File Not Founds"
fi
else
echo "Tomcat File Not Founds"
fi
fi
;;

stop)
if [ -f $PROFILEDIR/Tomcat5_Apache2 ]; then
if [ -f $CATALINA_HOME/bin/shutdown.sh ]; then
if [ -f $APACHE_HOME/bin/apachectl ]; then
"$CATALINA_HOME/bin/shutdown.sh"
echo "Stopping Tomcat5"
sleep 3
echo "Stopping Apache2"
$APACHE_HOME/bin/apachectl stop
rm $PROFILEDIR/Tomcat5_Apache2
else
echo "Apache File Not Founds"
fi
else
echo "Tomcat File Not Founds"
fi
else
echo "Not Running Tomcat5_Apache2"
fi
;;
*)
echo "Usage; `basename $0` {start|stop}" 1>&2
exit 1
;;
esac

exit 0

3.设置自动启动
-----------------------------------------------------------------------------------------------
#chmod u+x /etc/rc.d/init.d/httpd //修改文件执行权限
#/sbin/chkconfig --add httpd //将httpd加入系统启动列表
-----------------------------------------------------------------------------------------------

八.安装CVS
1.编辑以下文件
/etc/carid.d/cvspserver
service cvspserver
{
socket_type=stream
wait=no
user=root
server=/usr/bin/cvs
server_args=-f --allow-root=/usr/local/cvsroot pserver
log_on_failure += USERID
}

2.执行以下命令
-----------------------------------------------------------------------------------------------
# /usr/sbin/useradd -d /usr/local/cvsroot cvs //创建CVS管理用户。
#passwd cvs //创建管理用户密码。
# chmod 771 /usr/local/cvsroot //修改CVS根目录权限。
# su cvs //使用CVS用户的身份。
$ cvs -d /usr/local/cvsroot init //初始化CVS仓库。
$exit //退出CVS用户身份。
#chmod 644 /etc/carid.d/cvspserver //修改CVS服务启动文件权限。
# /etc/rc.d/init.d/carid restart //重启动carid超级服务器。
# netstat -lnp|grep 2401 //查看CVS服务是否已经启动。
# /usr/sbin/useradd cvspub //创建CVS等效系统用户cvspub。
# /usr/sbin/usermod -G cvs cvspub //将cvspub用户加入cvs组。
#cd /home/tets1 //进入测试用的项目目录。
#cvs import -m 'this is a test only' test1 v_0_0_1 start //将当前项目的文件导入CVS仓库。
-----------------------------------------------------------------------------------------------
说明:
CVS的密码问题,以前众说纷纭,有的是编一段程序来生成密码,有的则用所谓的土方法去拷贝shadow密码。其实我可以告诉初学者一个最简单方便的方法,就是采用Webmin添加CVS用户,它自己就会帮你生成密码。

3.编辑以下文件
/usr/local/cvsroot/CVSROOT/passwd
test1:NXWxabrVe7z/w:cvspub
test2:FZTxeAWW.ySIA:cvspub
说明:
主要是在最后加上用户名cvspub,让系统用户cvspub代替test1和test2去读写CVS仓库。

/usr/local/cvsroot/CVSROOT/readers
test1

/usr/local/cvsroot/CVSROOT/writers
cvs
test2
回复

使用道具 举报

发表于 3-3-2005 10:50 AM | 显示全部楼层
ticky 于 11-12-2004 02:27 AM  说 :
CREATE TABLE material (
  mat_id bigint(20) NOT NULL auto_increment,
  mat_class varchar(255) NOT NULL default '',
  date_created datetime default NULL
) TYPE=MyISAM;

CREATE TABLE spec (
   ...

您好像没有做Indexing,所以Query的时候才会特别慢!这是Mysql的问题.
建议您将Binding的Fields和Where后面有Select到的Field个别Index起来, 之后就会发觉速度有大幅度提升。

之前我尝试过没有Index起来的Table要用到8秒以上的时间来Select资料(有用Join, Count和Group), 但是Index过后却在不到一秒的时间就将资料呈现在Browser上了。

Indexing=能够加速搜寻速度。
回复

使用道具 举报

发表于 5-3-2005 03:19 PM | 显示全部楼层
i think have xml is better lor..
and jsp also is important in cgi de lor..
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 11-9-2025 02:24 PM , Processed in 0.132458 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表