『壹』 php和Python應該如何選擇
PHP和Python都可以,可以考慮Python,比較熱門。
Python解釋器易於擴展,可以使用C或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。Python也可用於可定製化軟體中的擴展程序語言。Python豐富的標准庫,提供了適用於各個主要系統平台的源碼或機器碼。2021年10月,語言流行指數的編譯器Tiobe將Python加冕為最受歡迎的編程語言,20年來首次將其置於Java、C和JavaScript之上。
語言特點
簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣。它使你能夠專注於解決問題而不是去搞明白語言本身。
易學:Python極其容易上手,因為Python有極其簡單的說明文檔。
易讀、易維護:風格清晰劃一、強制縮進。
『貳』 php 計算經緯度之間相差多少公里
//php 計算地圖上兩個坐標之間的距離
define('EARTH_RADIUS', 6378.137);//地球半徑,假設地球是規則的球體
define('PI', 3.1415926);
/**
* 計算兩組經緯度坐標 之間的距離
* params :lat1 緯度1; lng1 經度1; lat2 緯度2; lng2 經度2; len_type (1:m or 2:km);
* return m or km
*/
function GetDistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2)
{
$radLat1 = $lat1 * PI ()/ 180.0; //PI()圓周率
$radLat2 = $lat2 * PI() / 180.0;
$a = $radLat1 - $radLat2;
$b = ($lng1 * PI() / 180.0) - ($lng2 * PI() / 180.0);
$s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
$s = $s * EARTH_RADIUS;
$s = round($s * 1000);
if ($len_type --> 1)
{
$s /= 1000;
}
return round($s, $decimal);
}
echo GetDistance(39.908156,116.4767, 39.908452,116.450479, 1);//輸出距離/米
『叄』 我想用PHP將一張圖片合成到另一張圖片上去,但是要傾斜一定角度,像下面圖片中的這樣,高手幫忙啊
你把紅框裡面的東西當作水印來對待,其實就是加水印的過程
你網路一下,加水印的類一大堆,我這里就不復制出來了
『肆』 我想用PHP將一張圖片合成到另一張圖片上去,但是要傾斜一定角度,像下面圖片中的這樣,高手幫忙啊
1L方法太先進了 - -
使用PHP的GD庫應該可以得到LZ想要的效果,這里給思路吧,具體代碼需完善不少方面,實在沒時間研究啊 - -
//-----------------------------------------------------------------------------------------
header('Content-type:image/jpeg');
$imageDestination = 'images/dst.jpg'; //主視圖,也就是白雲飄飄這張主圖
$imageSource = 'images/src.png' //復制並需旋轉的小圖
$imageSource = imagerotate($imageSource, -25, -1); //把小圖向右旋轉25°,-1就是不填充顏色到旋轉後的空白部分,大概就是透明吧
/*
把旋轉後的小圖復制到大圖上
30, 50就是旋轉後小圖在大圖上的位置
0, 0是從旋轉後小圖的左上開始復制
這樣一直復制到imagesx($imageSource), imagesy($imageSource),就是把旋轉後小圖完整復制到大圖了
*/
image($imageDestination, $imageSource, 30, 50, 0, 0, imagesx($imageSource), imagesy($imageSource));
imagejpeg($imageDestination); //輸出圖片
//-----------------------------------------------------------------------------------------
當然,上面只是一個草稿式的代碼,具體還要考慮大小圖的類型,旋轉小圖後其尺寸,定位旋轉後小圖坐標,還有圖片的真彩色、透明等等問題,所以說還得花點心思才能把功能寫好。
希望能幫到你,滿意請採納~~
『伍』 php 求角度函數
abs --- 取絕對值
acos --- 取反餘弦值
asin --- 取反正弦值
atan --- 取反正切值
atan2 --- 取二個變數的反正切值
base_convert --- 轉換數值的進位方式
bindec --- 二進制轉十進制
ceil --- 取得大於指定數的最小整數值
cos --- 取餘弦值
decbin --- 十進制轉二進制
dechex --- 十進制轉十六進制
decoct --- 十進制轉八進制
deg2rad --- 將數值從度數轉成徑度
exp --- 取得自然對數的次方值
floor --- 取得小於指定數的最大整數值
getrandmax --- 取得最大亂數值
hexdec --- 十六進制轉十進制
log --- 自然對數
log10 --- 底為10的對數
max --- 傳回參數中最大值
min --- 傳回參數中最小值
mt_rand --- 取得亂數值
mt_srand --- 設定亂數種子
mt_getrandmax --- 取得亂數最大值
number_format --- 將數字字元串格式化
octdec --- 八進制轉十進制
pi --- 取得圓周率pi的值
pow --- 傳回次方項的值
rad2deg --- 轉換徑度值為度數
rand --- 產生亂數值
round --- 取四拾五入
sin --- 取正弦值
sqrt --- 取平方根值
srand --- 設定亂數種子
tan --- 取正切值
『陸』 我想用PHP將一張圖片合成到另一張圖片上去,但是要傾斜一定角度,像下面圖片中的這樣,高手幫忙啊
編寫示例代碼如下:
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>圖像旋轉</title>
<styletype="text/css">
#bg{
background-image:url(bg.jpg);
background-repeat:no-repeat;
width:333px;
height:229px;
}
#pic{
pading-left:30px;
width:333px;
height:229px;
-o-transform:rotate(21deg);/*Opera瀏覽器*/
-webkit-transform:rotate(21deg);/*Webkit內核瀏覽器*/
-moz-transform:rotate(21deg);/*Firefox瀏覽器*/
}
#picimg{
padding-top:42px;
padding-left:70px;
}
</style>
</head>
<body>
<divid="bg">
<divid="pic">
<imgsrc="pic.jpg"/>
</div>
</div>
</body>
</html>
背景圖:bg.jpg
『柒』 站在用戶的角度,php有什麼功能
站在用戶的角度,PHP主要功能是做網站,偶爾也可以用來做批處理,極少數還用來做圖形界面APP
『捌』 php問題-選擇資料庫
你這些語句都不是選擇資料庫的,標題好像不合適:)
明明那麼多句,你問這句話是什麼意思,你究竟是指的哪句:)
言歸正傳,你的程序段是一般資料庫操作的基本模板,學懂了這幾句以後寫什麼資料庫操作都不難了,我把你這些語句一一注釋一下:
$sql="select sum(num) as total_num from vote";
//這一句第一層意思從PHP角度理解,就是定義一個字元串變數,值是引號裡面的那些,無論那些字元串是什麼命令,此時僅僅是賦值,並不運行
//從MYSQL的角度理解,這是一個資料庫命令,獲取資料庫裡面vote表的記錄數量,並作為名total_num返回
$result=mysql_query($sql);
//這一句讓MYSQL資料庫運行變數$sql裡面的語句,結果存入$result中
$myarray=mysql_fetch_array($result);
//這一句獲取執行結果$result裡面的一行返回數據,取到數組$myarray中
$total_num=$myarray["total_num"];
//這一句把數組變數$myarray裡面名字叫做total_num的元素賦給變數$total_num
『玖』 從功能角度描述完整的php程序由哪幾個部分組成,並描述各部分的實現技術
<?php
echo 'hello,world!';
?>
這個也是完整的php程序,復雜的也可以很復雜,MVC是一種設計模式,php主要是在C用,也就是控制器層,實現邏輯業務。
『拾』 PHP的性能探討和測試
緣起
關於PHP 很多人的直觀感覺是PHP是一種靈活的腳本語言 庫類豐富 使用簡單 安全 非常適合WEB開發 但性能低下 PHP的性能是否真 的就如同大家的感覺一樣的差呢?本文就是圍繞這么一個話題來進行探討的 從源碼 應用場景 基準性能 對比分析等幾個方面深入分析PHP之性能問題 並通 過真實的數據來說話
從原理分析PHP性能
從原理分析PHP的性能 主要從以下幾個方面 內存管理 變數 函數 運行機制來進行分析
內存管理
類似Nginx的內存管理方式 PHP在內部也是基於內存池 並且引入內存池的生命周期概念 在內存池方面 PHP對PHP腳本和擴展的所有內 存相關操作都進行了託管 對大內存和小內存的管理採用了不同的實現方式和優化 具體可以參考以下文檔 在內存分配和回收的生命周期內 PHP採用一次初始化申請+動態擴容+內存標識回收機制 並且在每次請求結束後直 接對內存池進行重新mask
變數
總所周知 PHP是一種弱變數類型的語言 所以在PHP內部 所有的PHP變數都對應成一種類型Zval 其中具體定義如下
圖一PHP變數
在變數方面 PHP做了大量的優化工作 比如說Reference counting和 on writer機制 這樣能夠保證內存使用上的優化 並且減少內存拷貝次數(請參考) 在數組方面 PHP內部採用高效的hashtable來實現
函數
在PHP內部 所有的PHP函數都回轉化成內部的一個函數指針 比如說擴展中函數
ZEND_FUNCTION(my_function);//類似functionmy_function(){}
在內部展開後就會是一個函數
voidzif_my_function(INTERNAL_FUNCTION_PARAMETERS);
voidzif_my_function(
intht
zval*return_value
zval*this_ptr
intreturn_value_used
zend_executor_globals*executor_globals
);
從這個角度來看 PHP函數在內部也是對應一個函數指針
運行機制
在話說PHP性能的時候 很多人都會說「C/C++是編譯型 JAVA是半編譯型 PHP是解釋型」 也就是說PHP是先動態解析再代碼運行的 所以從這個角度來看 PHP性能必然很差
的確 從PHP腳本運行來輸出 的確是一個動態解析再代碼運行的過程 具體來說 PHP腳本的運行機制如下圖所示
圖二 PHP運行機制
PHP的運行階段也分成三個階段
Parse 語法分析階段
Compile 編譯產出opcode中間碼
Execute 運行 動態運行進行輸出
所以說 在PHP內部 本身也是存在編譯的過程 並且據此產生了大量的opcode cache工具 比如說apc eacc xcache等等 這些opcode cache在生產環境基本上在標配 基於opcode cache 能到做到「PHP腳本編譯一次 多次運行」的效果 從這點上 PHP就和JAVA的半編譯機制非常類似
所以 從運行機制上來看 PHP的運行模式和JAVA是非常類似的 都是先產生中間碼 然後運行在不同虛擬機上
動態運行
從上面的幾個分析來看 PHP在內存管理 變數 函數 運行機制等幾個方面都做了大量的工作 所以從原理來看 PHP 不應該存在性能問題 性能至少也應該和Java 比較接近
這個時候就不得不談PHP動態語言的特性所帶來的性能問題了 由於PHP是動態運行時 所以所有的變數 函數 對象調用 作用域實現等等都是在 執行階段中才確定的 這個從根本上決定了PHP性能中很難改變的一些東西 在C/C++等能夠在靜態編譯階段確定的變數 函數 在PHP中需要在動態運行 中確定 也就決定了PHP中間碼不能直接運行而需要運行在Zend Engine上
說到PHP變數的具體實現 又不得不說一個東西了 Hashtable Hashtable可以說在PHP靈魂之一 在PHP內部廣泛用到 包含變數符號棧 函數符號棧等等都是基於hashtable的
以PHP變數為例來說明下PHP的動態運行特點 比如說代碼
<?php
$var=「hello blog xiuwz 」;
?>
該代碼的執行結果就是在變數符號棧(是一個hashtable)中新增一個項
當要使用到該變數時候 就去變數符合棧中去查找(也就是變數調用對出了一個hash查找的過程)
同樣對於函數調用也基本上類似有一個函數符號棧(hashtable)
其實關於動態運行的變數查找特點 在PHP的運行機制中也能看出一些 PHP代碼通過解釋 編譯後的流程下圖
圖 PHP運行實例
從上圖可以看出 PHP代碼在pile之後 產出的了類符號表 函數符號表 和OPCODE 在真正執行的時候 zend Engine會根據op code去對應的符號表中進行查找 處理
從某種程度上 在這種問題的上 很難找到解決方案 因為這是由於PHP語言的動態特性所決定的 但是在國內外也有不少的人在尋找解決方案 因為 通過這樣 能夠從根本上完全的優化PHP 典型的列子有facebook的hiphop
結論
從上面分析來看 在基礎的內存管理 變數 函數 運行機制方面 PHP本身並不會存在明顯的性能差異 但由於PHP的動態運行特性 決定了 PHP和其他的編譯型語言相比 所有的變數查找 函數運行等等都會多一些hash查找的CPU開銷和額外的內存開銷 至於這種開銷具體有多大 可以通過後 續的基準性能和對比分析得出
因此 也可以大體看出PHP不太適合的一些場景 大量計算性任務 大數據量的運算 內存要求很嚴格的應用場景 如果要實現這些功能 也建議通過擴展的方式實現 然後再提供鉤子函數給PHP調用 這樣可以減低內部計算的變數 函數等系列開銷
基準性能
對於PHP基準性能 目前缺少標準的數據 大多數同學都存在感性的認識 有人認為 QPS就是PHP的極限了 此外 對於框架的性能和框架對性能的影響很沒有響應的權威數字
本章節的目的是給出一個基準的參考性能指標 通過數據給大家一個直觀的了解
具體的基準性能有以下幾個方面
裸PHP性能 完成基本的功能
裸框架的性能 只做最簡單的路由分發 只走通核心功能
標准模塊的基準性能 所謂標准模塊的基準性能 是指一個具有完整服務模塊功能的基準性能
環境說明
測試環境
Uname aPnux db forum test db _ # SMP Wed Aug : : CST x _ x _ x _ GNU/PnuxRed Hat Enterprise Pnux AS release (Nahant Update )
Intel(R) Xeon(R) CPU E @ GHz
軟體相關
Nginx nginx version: nginx/ built by gcc (Red Hat )Php (採用php fpm)
PHP (cP) (built: Mar : : )
Copyright (c) The PHP Group
Zend Engine v Copyright (c) Zend Technologies
with eAccelerator v Copyright (c) eAccelerator by eAccelerator
bingo
PHP框架
其他說明
目標機器的部署方式 nginx >php fpm >php腳本
測試壓力機器和目標機器獨立部署
裸PHP性能
最簡單的PHP腳本
<?php
require_once『 /actions/indexAction php』;
$objAction=newindexAction();
$objAction >init();
$objAction >execute();
?>
Acitons/indexAction php裡面的代碼如下
<?php
classindexAction
{
pubPcfunctionexecute()
{
echo『hello world!』;
}
}
?>
通過壓力工具測試結果如下
裸PHP框架性能
為了和 的對比 基於bingo 框架實現了類似的功能 代碼如下
<?php
require_once『Bingo/Controller/Front php』;
$objFrontController=Bingo_Controller_Front::getInstance(array(
『actionDir』=>『 /actions』
));
$objFrontController >dispatch();
壓力測試結果如下
從該測試結果可以看出 框架雖然有一定的消耗 但對整體的性能來說影響是非常小的
標准PHP模塊的基準性能
所謂標准PHP模塊 是指一個PHP模塊所必須要具體的基本功能
路由分發
自動載入
LOG初始化&Notice日誌列印 所以的UI請求都一條標準的日誌
錯誤處理
時間校正
自動計算每個階段耗時開銷
編碼識別&編碼轉化
標准配置文件的解析和調用
採用bingo 的代碼自動生成工具產生標準的測試PHP模塊 test
測試結果如下
結論
從測試數據的結論來看 PHP本身的性能還是可以的 基準性能完全能夠達到幾千甚至上W的QPS 至於為什麼在大多數的PHP模塊中表現不佳 其實這個時候更應該去找出系統的瓶頸點 而是簡單的說OK PHP不行 那我們換C來搞吧 (下一個章節 會通過一些例子來對比 採用C來處理不見得有特 別的優勢)
通過基準數據 可以得出以下幾個具體的結論
PHP本身性能也很不錯 簡單功能下能夠達到 QPS 極限也能過W
PHP框架本身對性能影響非常有限 尤其是在有一定業務邏輯和數據交互的情況下 幾乎可以忽略
一個標準的PHP模塊 基準性能能夠達到 QPS( cpu idle)
對比分析
lishixin/Article/program/PHP/201311/21287