引用
因為在做垂直搜索工作中,使用的是java編寫的一個搜索類庫。做垂直搜索,很多實用要使用到配置。當搜索的信息量大時,網站的更新。搜索程序的配置維護是一個不可忽視的問題。所以用了php做網頁,提供配置界面,這樣就可以不用直接修改配置文件或是配置資料庫表。當把配置信息配置好了,我們需要檢測配置是否正確,因為使用的是java程序,所以檢測配置的正確與否使用的也是java程序來檢測。這里就存在一個問題,就是需要把php頁面上的信息傳入到java程序中去檢測。這個時候就需要php和java通信了。下面我就來介紹下怎麼使php跟java通信(當然,你也可以使用類似webservice等技術)也就是php中調用java程序。 php要調用java程序:需要以下准備,php程序,java程序,還有就是shell程序或是bat程序。下面分別介紹下在linux伺服器下php調用java程序和在windows伺服器下調用java程序。前提是php,apache,jdk的環境都已經配置好。
一 在linux下php調用java程序是通過shell文件。分別是以下三個文件: test_shell.php test_shell.java test_shell.sh 他們的源代碼如下:
1.test_shell.java程序代碼
public class test_shell {
public static void main(String[] args) {
System.out.println("你輸入的參數是:"+args[0]+"t"+args[1]);
}
}
2.test_shell.php程序代碼
<?php
/*
* 該函數是用來執行shell命令的,其實還可以使用:exec(),system(),
* popen()和pclose(),passthru() 函數。最長用的是前面兩個和例中使
* 用的shell_exec()。
*/
$args1="我喜歡你";
$args2="我很愛你";
// 注意空格
$r=shell_exec("./test_shell.sh $args1 $args2");
echo $r;
?>
3.test_shell.sh程序代碼是
#!/bin/sh
JAVA_HOME=/usr/local/jdk
CLASSPATH=.:/usr/local/jdk/jre/lib/rt.jar:/usr/local/apache/htdocs/test_shell/test_shell.class
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH
cd /usr/local/apache/htdocs/test_shell
java test_shell
#shell代碼結束
以下是三個程序的存放路徑和運行次序。
1.三個文件都必須在同一目錄下,比如在/usr/local/apache/htdocs/test_shell/下,不然php很難調到java程序。
2.把test_shell.java程序編譯成test_shell.class,然後把test_shell.class文件存放到CLASSPATH中。如果系統配置了那些環境變數,這里在配置一次是沒有壞處的,也不會影響配置好的系統環境變數。這里設置的好處是當沒有配置jdk環境配置,只有jre時,則需把jre放到/usr/local/jdk下就以。
二、下面先介紹在windows伺服器下,php調用java程序是通過bat文件來的。分別是以下三個文件: test_bat.php test_bat.java test_bat.sh 他們的源代碼如下:
1.java程序
public class test_bat {
public static void main(String[] args) {
System.out.println("你輸入的參數是:"+args[0]+"t"+args[1]);
}
}
2.test_bat.php程序代碼
<?php
/*
* 該函數是用來執行shell命令的,其實還可以使用:exec(),system(),
* popen()和pclose(),passthru() 函數。最長用的是前面兩個和例中使
* 用的shell_exec()。
*/
$args1="我喜歡你";
$args2="我很愛你";
// 注意空格
$r=shell_exec("./test_shell.sh $args1 $args2");
echo $r;
?>
3.test_bat.sh程序代碼是
@echo off
set path=%path%;%cd%jrebin
set CLASSPATH=.;%cd%jrelibrt.jar;%cd%test_bat.class
java test_bat %1 %2
#bat代碼結束
1.三個文件都必須放在同一目錄下,比如在/usr/local/apache/htdocs/test_bat/下,不然php很難調到java程序。
2.把test_bat.java程序編譯成test_bat.class,然後把test_bat.class文件存放到CLASSPATH中。如果系統配置了那些環境變數,這里在配置是沒有壞處的,也不會影響配置好的系統環境變數。這里設置的好處是當沒有配置jdk環境配置,只有jre時,則需把jre放到跟跟test_bat.java同一目錄下就行了。
三、上面兩個例子中,test_shell.sh用的絕對路徑,test_bat.bat是用的相對路徑。不管是絕對還是相對,只要路徑對了就行了。
2. 大型網站中,php和java是怎麼結合的
PHP+JAVA的架構,特別是對於有復雜的用戶交互及高並發及後端還有復雜的業務的網站來說,如電商類網站,前端用PHP,可以做到快速開發,部署不用重啟,同時nginx + fastcgi + php的組合也是經得起高並發考驗的。後端的復雜業務處理(如訂單處理,購物車,庫存相關的)使用java來做實在是太合適了。不信你可以試試!
3. 【程序】Java和PHP這兩種技術能否結合使用
PHP和JAVA不能結合,可以和javascrip腳本結合。做一些特殊效果。
4. PHP可以和JAVA混合在一起開發網站么
php目前是web2.0時代做火的一門編程語言。在一線城市大量招聘php人才。成功案例,去谷歌或者網路一下,看一下結果就知道php現在是多麼流行了。php要運行,需要伺服器來支持運行。可以喝Java結合,php一個支持Java擴展的模塊。當然了,也可以不同的模塊使用不同的語言來編寫,而不限於Java一種。
5. java與PHP兩個程序能同時運行在一個伺服器里嗎
主函數所在類必須是public,而public類則必須定義在以該類名為文件名的java文件中。
所以你要同時運行兩個主函數,就要獨立的寫兩個java文件,而不能這樣放在一起。
首先:分成兩個文件
其次:public class StaticTest 必須在 StaticTest.java 這個文件內
Employee.java 裡面把主函數注釋了
如果不注釋,他就不運行StaticTest.java裡面的主函數..
如果注釋了,就報錯誤.
那麼Eclipse在Run的菜單上,把之前自動生成的運行配置項(名字大概是:Run Configuration...)先手工刪除掉,然後重新試試。
6. php和java能不能結合使用
可以結合使用,看你在實際項目中運用到什麼模塊。
例如安卓開發模塊中的一個支付功能,就可以用到PHP和Java結合來做。
Java來操作主要業務層,以確保安全性,PHP負責介面傳送值。
7. 大型網站中,php和java是怎麼結合的
我是做JAVAEE的,但還沒有和PHP的共存的項目的經驗,但.NET是有的。
.NET負責報表部分,JAVA是業務處理,實際上,兩部分除了訪問同一個庫外,沒什麼交集。
我想PHP應該不同,應該是和JAVA分擔前後端的。
PHP負責展示及控制,JAVA負責業務和固化。
PHP因其執行容器原因,沒辦法駐留內存,高並發性能上就是個問題。
JAVA可以彌補這點。
前端上PHP可以彌補JAVA開發效率低的短板。
純個人理解。