當前位置:首頁 » 操作系統 » gearman源碼

gearman源碼

發布時間: 2023-05-10 09:17:50

① redhat5下安裝阿帕奇出現下面問題怎麼解決

你如果要在redhat5編譯C/C++程序,你必須安裝以下的軟體包:
=> autoconf:configure用的
=> make/automake: make的主程序
=> GNU GCC C 編譯器(gcc) version 4.1: 編譯C的
=> GNU GCC C++ 編譯器 (gcc-c++): 編譯C++的

在Redhat / CentOS / Fedora Linux下(前者是商業版要付錢,中間的是代碼重編譯社區版免費,後者是個人電腦用的不知道免費不免費。。。因為我用的是ubuntu)漏友,你可以用下面的方式安裝這幾個軟體包(任何一種都可以的)
[a] GUI界面(最兆搜滾適合剛從windows轉過來的菜菜)
[b] 從CD裝RPM包(有盤的)
[c] 從網上自動下載安裝(最方便)


② 求教,在安裝google-perftools,make時報錯,已裝libunwind

刪除了系統原帶的sqlite3 ,到官網上下一個源碼,重新編譯安裝sqlite3。

如:
把sqlite3安裝到 /usr/local/sqlite3
tar zxf sqlite3.xxxx.tar.gz
cd sqlite.3.xxxx
./configura --prefix=/usr/local/sqlite3
make && make install
cd ..

最後在編譯Gearman時帶上 --with-sqlite3=/usr/local/sqlite3,告訴編譯器應該使用這個新的sqlite即可。

③ redhat 5下安裝阿帕奇出現make: *** No targets specified and no makefile found. Stop.

你如果要在redhat5編譯C/C++程序,你必須安裝以下的軟體包:
=> autoconf:configure用的
=> make/automake: make的主程序
=> GNU GCC C 編譯器(gcc) version 4.1: 編譯C的
=> GNU GCC C++ 編譯器 (gcc-c++): 編譯C++的

在Redhat / CentOS / Fedora Linux下(前者是商業版要付錢,中間的是代碼重編譯社區版免費,後者是個人電腦用的不知道免費不免費。。散坦。因為我用的是ubuntu),你可以用下面的方式安裝這幾個軟孝掘卜件包(任何一種都可以的)
[a] GUI界面(最適合剛從windows轉過來的菜菜)
[b] 從CD裝RPM包(有盤的)
[c] 從網上自動下載安裝(巧穗最方便)

刪除了系統原帶的sqlite3 ,到官網上下一個源碼,重新編譯安裝sqlite3。

如:
把sqlite3安裝到 /usr/local/sqlite3
tar zxf sqlite3.xxxx.tar.gz
cd sqlite.3.xxxx
./configura --prefix=/usr/local/sqlite3
make && make install
cd ..

最後在編譯Gearman時帶上 --with-sqlite3=/usr/local/sqlite3,告訴編譯器應該使用這個新的sqlite即可。

php怎麼實現文件分發功能

1、Gearman介紹和使用場景
Gearman是一個分發任務的程序框架,可以用在各種場合,與Hadoop相 比,Gearman更偏向於任務分發功能。它的任務分布非常簡單,簡單得可以只需要用腳本即可完成。Gearman最初用於LiveJournal的圖片 resize功能,由於圖片resize需要消耗大量計算資源,因此需要調度到後端多台伺服器執行,完成任務之後返回前端再呈現到界面。
通常,多語言多系統之間的集成是個大問題,一般來說,人們多半會採用WebService的方式來處理此類集成問題,但不管採用何種風格的WebService,如RPC風格,或者REST風格,其本身都有一定的復雜性。相比之下,Gearman也能實現類似的作用,而且更簡單易用。
一個Gearman請求的處理過程涉及三個角色:Client -> Job -> Worker。
Client:請求的發起者,可以是C,PHP,Perl,MySQL UDF等等。
Job:請求的調度者,用來負責協調把Client發出的請求轉發給合適的Work。
Worker:請求的處理者,可以是C,PHP,Perl等等。
因為Client,Worker並不限制用一樣的語言,所以有利於多語言多系統之間的集成。
甚至我們通過增加更多的Worker,可以很方便的實現應用程序的分布式負載均衡架構。
2、Gearman job分發服務端安裝
安裝Gearman server and library:
wget http//launchpad.net/gearmand/trunk/0.8/+download/gearmand-0.8.tar.gz
tar zxf gearmand-0.8.tar.gz
cd gearmand-0.8
./configure
慶緩sudo make
sudo make install
中間可能會遇到些問題:
在./configure的時候,可能會出現缺少libraries的情況,一般是缺少碧塵libevent和uuid這兩個開發包,安裝之。。。
sudo apt-get install libevent-dev
sudo apt-get install uuid-dev
安裝完成後再重新配置安裝,安裝完成悔差禪後執行
sudo ldconfig
3、Gearman Client和Worker端PHP實現實例
安裝Gearman PHP extension:
wget http://pecl.php.net/get/gearman-0.4.0.tgz
tar zxf gearman-0.4.0.tgz
cd gearman-0.4.0
phpize
./configure
sudo make
sudo make install
中間可能遇到的問題:
找不到phpize命令,phpize在php開發包中,所以要先安裝php5-dev
sudo apt-get install php5-dev
安裝完後,就可以在源碼目錄中執行phpize生成相關安裝配置信息,接著執行後面的./configure等
make install後,它告訴你一個目錄,生成的gearman.so就在那裡。
根據需要考到相應PHP的擴展目錄里(因為我直接用系統默認安裝的php,它自動生成就在擴展中)
接下來修改php.ini以使php載入該模塊:
php --ini
看下php.ini在哪裡,sudo vim 修改之,在其中加入
extension = "gearman.so"
然後,開始編寫client和worker端
client.PHP
[php] view plain
<?php
$client= new GearmanClient();
$client->addServer("127.0.0.1", 4730);
print $client->do("title", "Linvo");
print "/n";
?>
worker.php
[php] view plain
<?php
$worker= new GearmanWorker();
$worker->addServer("127.0.0.1", 4730);
$worker->addFunction("title", "title_function");
while (true){
$worker->work();
if ($this->worker->returnCode() != GEARMAN_SUCCESS) {
//Gearman 狀態錯誤 需要做日誌或異常處理
}
}
function title_function($job)
{
$str = $job->workload();
return strlen($str);
}
?>
准備工作已經完畢,試驗開始
1、啟動job
gearmand -d
2、啟動worker
php -c /etc/php5/apache2/php.ini worker.php
3、啟動client(新開終端中打開)
php -c /etc/php5/apache2/php.ini client.php
屏幕顯示字元串的長度 「5」
這里,有幾點需要說明一下:
1、這里直接用php cli方式運行,添加-c參數是為了載入php.ini配置文件,以載入gearman擴展
2、worker應該做成守護進程(CLI模式),可以開啟多個,這樣client發起的任務就會分發到各個worker分別來執行(自動負載均衡 )
這個例子由於太過簡單,即使開啟多個worker也無法看出效果,不過可以通過終止其中一個,可以看出系統自動切換到其他worker繼續正常執行
3、同理,client也是可以開啟多個的(模型請參考之前的那邊日誌)
4、同時,job也可以開啟多個,以避免單點故障

⑤ 求教,在安裝google-perftools,make時報錯,已裝libunwind

刪除了系統原帶的襲神sqlite3 ,到官網上下一個源碼,重新編譯枯禪旅安裝sqlite3。 如: 把sqlite3安裝到沒凳 /usr/local/sqlite3 tar zxf sqlite3.xxxx.tar.gz cd sqlite.3.xxxx ./configura --prefix=/usr/local/sqlite3 make && make install cd .. 最後在編譯Gearman時帶上 --with-sqlite3=/usr/local/sqlite3,告訴編譯器應該使用這個新的sqlite即可。

⑥ gearman怎麼在windows上編譯php擴展

如果你用的是apt-get安豎鄭裝指亂的話,php的版本就是軟體中心配置好了的,這個你就沒法決定安裝版本。如果你想安裝指定唯纖檔版本的話,就只有到官網去下載源碼,然後自己編譯安裝了

⑦ golang 多人開發怎麼保證源碼安全

隨著PHP有著越來越深入的了解,以及遇到越來越多的不同業務時,使用PHP總會讓我有一種莫名的無力感。當然,並不是我一個人在使用PHP的時候遇到了問題。事實上,每個略微有一些經驗,接觸過一些需求的人都會有同樣的困惑。各種配合LAMP(或者LNMP?)架構的後端技術也因此被發明或被發現,進而整合到PHP的開發的技術體系中。從簡單的Memcached作為數據中轉,cron後端定時處理;到Gearman、RabbitMQ這些隊列神器;最近Laruence甚至封裝了利用libcurl的非同步特性實現並發RPC調用的yar擴展。幾乎整個社區都在尋找PHP的摩西之路。好吧,說了一大堆,回歸主題。之前我寫了一篇英文練筆《》,獲得不少國際友人的關注。排除拼寫和語法被他們詬病外,主要是有許多朋友覺得我沒把事情說清楚。所以這里我用母語重新聊聊這個事情,只是這些國際友人什麼時候能學會閱讀中文呢?;)Go或者Golang,是由Google支持的快速、一致、穩定的,有活躍的社區支持的開源編程語言。越來越多的應用選擇使用Golang進行構建。雖然RobPike說「…我們希望C++程序員來了解Go並作為一個可選的語言…」,不過我真得認為:PHPer應當學習Golang!接下來我們就來談談原因。容易學習PHP相當容易學習。Golang也是!在這點上,一群大老外對我的觀點進行了猛烈的抨擊。他們認為我羞辱了PHPer,說得好像只有簡單的東西PHPer才能學會一樣。但是,這難道不是事實嗎?或者換個說法:像我一樣的喜歡PHP的人,或多或少都會更喜歡簡單的東西。PHP的語法接近C族編程語言(C/C++/Java等等)。如果有這些語言的經驗,在第一次遇到PHP的時候立刻就能開始上手編寫代碼。在我看來,編寫PHP代碼或許更加考驗程序員的記憶力,而不是智力(當你面對各種不同風格的函數定義、各種擴展的特殊約定時,你一定會相當認同我的觀點)。Golang同樣是一個C族編程語言。呃,或者有一些不同吧。例如關鍵字「for」,功能上和PHP的接近,但是沒有括弧。條件語句「if」同樣無需括弧。可以閱讀EffectiveGo了解內容。Golang只有3025個關鍵字和47個操作符號、分隔符號或其他特殊標記。記住這些標記確實不需要什麼特別的努力。精巧的類型系統相當容易使用。實用的,具有方法的結構體類型代替了笨重的對象系統。介面的設計是Golang中我最喜歡的部分。當完成了《Go指南》的學習之後,利用PHP積累的經驗,立刻就可以開始使用Golang處理一些簡單的任務。容易使用PHP腳本是由SAPI組件進行解析執行的,如Web伺服器模塊、PHP-FPM或者CLI。部署PHP所需要的全部東西就是一個SAPI環境。配置這個環境對於新手來說可能是學習PHP過程中最為困難的部分。所有的Golang代碼會編譯和鏈接為本地碼。所以除了編譯環境,執行時無需再為其進行任何特別的部署。對比PHP環境的配置,這要簡單很多。你真得認為配置PHP環境很復雜嗎?我不覺得,真的!而配置Golang編譯環境比那還要簡單點。我確信已經有大量的Golang相關的書籍、文章介紹過如何進行編譯環境的配置了。為了更加清晰,我這里梳理一下思路。有三個步驟需要處理:下載Golang的源代碼;根據《[翻譯]Go環境設置》的提示設置環境變數;運行源代碼src目錄中的all.bash。或者一步到位:使用二進制包進行安裝。然後就會得到一個叫做「go」的工具集合。使用「go」工具和使用PHP的CLI工具一樣簡單。《[翻譯]go工具》對此進行了詳細的解釋。PHP的迷思如果一個編程語言容易學習和使用,我們是不是就應當學習它呢?有許多容易學習和使用的編程語言。難道要把它們都學一遍?答案是顯然的:NO!但是呢?只是因為它很酷!是的,我在開玩笑,但是這是真的。無論如何先從PHP自身談起吧。PHP「原本是為了開發動態的Web頁面而設計的伺服器端通用語言(Wikipedia)」。PHP一個重要的特性就是可以嵌入到HMTL中。代碼編寫在「」標簽內;HTML寫在標簽外。它有一個強大的擴展系統。擴展使用C調用ZendAPI編寫。數據的處理實際上要利用這些擴展完成。在我看來,PHP是世界上最好的模板語言。但是當積累了一些PHP的經驗,並且開始面對一些更加復雜的Web應用時,你一定會對PHP產生一種無力的感覺。它沒有內建的並行機制,沒有線程、進程(你真得認為那個簡陋的進程式控制制可以不加改造的用在高並發的生產環境?),或者其他某「程」。一個慢數據源可以阻塞整個頁面的處理。消息隊列、緩存、代理……系統開始不僅僅是PHP這么單純,還包括了許多服務和系統組件。這時,PHP只處理很少的業務邏輯,成為真正的模板語言了。PHPer們總是在尋找解決這一問題的法,如「PHPmultithread」或者PHPRPC並發框架。我很難說哪種會更好一些。不過我肯定你會需要選擇一些編程語言用於後端工作的開發。就我自己的經驗,我嘗試過C(一直在和malloc/free進行搏鬥)/Java(陷入到了jar地獄中)/python(從來沒能做到Pythonic不說,還總是在錯誤的類型中打轉)……如果想要獲得性能,就得同內存管理進行搏鬥;如果用GC,就得部署和調優VM;當獲得便利性的時候,同時也是走在刀尖上,一個小錯誤就引起巨大的災難……每個都有優勢,同樣每個都有問題。好吧!現在回到Golang!Golang有GC,無需關心內存管理(或者可以用較少的精力去關注它)。代碼被編譯為本地碼,因此「cp」和「mv」就是部署Golang編寫的應用所需要的全部工具。噢,我剛才已經說過了,Golang是一個具有靜態類型系統的編譯語言。所以你沒有機會弄亂變數的類型。當然,PHPer應該學習Golang的一個重要原因是「轉到Go是因為他們並未放棄太多的表達能力,但是獲得了性能,並且與並發共舞(RobPike)」。《WhyNotGo?(英文)》對此進行了深入的分析。我可以分享一些我的經驗:有一個Gearman的worker用於處理後端數據。PHP通過其API連接到Gearman的JobServer向worker發起請求。最初worker是使用python編寫的(還有更加原始的版本,PHP的,但是你能想像它工作起來……唉,不說了……)。這個版本有許多的問題(是我們自己的問題,不關Python的事),但是至少它能工作。後來用Golang重寫了這個worker。為此我開發了Golang的GearmanAPI,並使用ZendAPI編寫了一個在Golang中執行PHP腳本的包。然後將它們放在一起:一個可以執行PHP的Gearmanworker。它已經工作了一段時間了,看起來還不錯!哦,受到Yar的啟發,這里還有一個Golang編寫的RPC合並器,用來合並PHP腳本中的RPC調用。現在還是個玩具,不過或許日後能用得著。這其實是將Golang的channel當作消息隊列來用。我在《Golang:有趣的channel應用》中對此有一些說明。世界真美好啊。謝謝Golang!無論如何,大多數PHPer在進行後端開發的時候都會需要學習一些其他語言。如果你正在尋找,或者已經嘗試了一些其他語言。為什麼不來試試Golang?它真得可以讓你的生活更加輕松和快樂。讓你可以有的時間陪伴你的家人和朋友,吃你愛吃的東西,去你想去的地方。貌似我還是沒說清楚啊?好吧,沒關系,在下個月的中國軟體開發者大會上再跟大家就這個話題做一個探討吧。

⑧ 怎樣在Linux下從源代碼安裝SQLite3,在redhat安裝gearman

Linux最早由LinusBenedictTorvalds在1991年開始編寫。在這之前,RichardStallman創建了FreeSoftwareFoundation(FSF)組織以及GNU項目,並不斷的編寫創建GNU程序(此類程序的許可方式均為GPL:GeneralPublicLicense)。在不斷的有傑出的程序員和開發者加入到GNU組織中後,便造就了今天我們所看到的Linux,或稱GNU/Linux。Linux的發行版本可以大體分為兩類,一類是商業公司維護的發行版本,一類是社區組織維護的發行版本,前者以著名的Redhat(RHEL)為代表,後者以Debian為代表。下面介紹一下各個發行版本的特點:Redhat,應該稱為Redhat系列,包括RHEL(RedhatEnterpriseLinux,也就是所謂的RedhatAdvanceServer,收費版本)、FedoraCore(由原來的Redhat桌面版本發展而來,免費版本)、CentOS(RHEL的社區克隆版本,免費)。Redhat應該說是在國內使用人群最多的Linux版本,甚至有人將Redhat等同於Linux,而有些老鳥更是只用這一個版本的Linux。所以這個版本的特點就是使用人群數量大,資料非常多,言下之意就是如果你有什麼不明白的地方,很容易找到人來問,而且網上的一般Linux教程都是以Redhat為例來講解的。Redhat系列的包管理方式採用的是基於RPM包的YUM包管理方式,包分發方式是編譯好的二進制文件。穩定性方面RHEL和CentOS的穩定性非常好,適合於伺服器使用,但是FedoraCore的穩定性較差,最好只用於桌面應用。Debian,或者稱Debian系列,包括Debian和Ubuntu等。Debian是社區類Linux的典範,是迄今為止最遵循GNU規范的Linux系統。Debian最早由IanMurdock於1993年創建,分為三個版本分支(branch):stable,testing和unstable。其中,unstable為最新的測試版本,其中包括最新的軟體包,但是也有相對較多的bug,適合桌面用戶。testing的版本都經過unstable中的測試,相對較為穩定,也支持了不少新技術(比如SMP等)。而stable一般只用於伺服器,上面的軟體包大部分都比較過時,但是穩定和安全性都非常的高。Debian最具特色的是apt-get/dpkg包管理方式,其實Redhat的YUM也是在模仿Debian的APT方式,但在二進制文件發行方式中,APT應該是最好的了。Debian的資料也很豐富,有很多支持的社區,有問題求教也有地方可去:)Ubuntu嚴格來說不能算一個獨立的發行版本,Ubuntu是基於Debian的unstable版本加強而來,可以這么說,Ubuntu就是一個擁有Debian所有的優點,以及自己所加強的優點的近乎完美的Linux桌面系統。根據選擇的桌面系統不同,有三個版本可供選擇,基於Gnome的Ubuntu,基於KDE的Kubuntu以及基於Xfc的Xubuntu。特點是界面非常友好,容易上手,對硬體的支持非常全面,是最適合做桌面系統的Linux發行版本。Gentoo,偉大的Gentoo是Linux世界最年輕的發行版本,正因為年輕,所以能吸取在她之前的所有發行版本的優點,這也是Gentoo被稱為最完美的Linux發行版本的原因之一。Gentoo最初由DanielRobbins(FreeBSD的開發者之一)創建,首個穩定版本發布於2002年。由於開發者對FreeBSD的熟識,所以Gentoo擁有媲美FreeBSD的廣受美譽的ports系統——Portage包管理系統。不同於APT和YUM等二進制文件分發的包管理系統,Portage是基於源代碼分發的,必須編譯後才能運行,對於大型軟體而言比較慢,不過正因為所有軟體都是在本地機器編譯的,在經過各種定製的編譯參數優化後,能將機器的硬體性能發揮到極致。Gentoo是所有Linux發行版本里安裝最復雜的,但是又是安裝完成後最便於管理的版本,也是在相同硬體環境下運行最快的版本。最後,介紹一下FreeBSD,需要強調的是:FreeBSD並不是一個Linux系統!但FreeBSD與Linux的用戶群有相當一部分是重合的,二者支持的硬體環境也比較一致,所採用的軟體也比較類似,所以可以將FreeBSD視為一個Linux版本來比較。FreeBSD擁有兩個分支:stable和current。顧名思義,stable是穩定版,而current則是添加了新技術的測試版。FreeBSD採用Ports包管理系統,與Gentoo類似,基於源代碼分發,必須在本地機器編後後才能運行,但是Ports系統沒有Portage系統使用簡便,使用起來稍微復雜一些。FreeBSD的最大特點就是穩定和高效,是作為伺服器操作系統的最佳選擇,但對硬體的支持沒有Linux完備,所以並不適合作為桌面系統。下面給為選擇一個Linux發行版本犯愁的朋友一些建議:如果你只是需要一個桌面系統,而且既不想使用盜版,又不想花大量的錢購買商業軟體,那麼你就需要一款適合桌面使用的Linux發行版本了,如果你不想自己定製任何東西,不想在系統上浪費太多時間,那麼很簡單,你就根據自己的愛好在ubuntu、kubuntu以及xubuntu中選一款吧,三者的區別僅僅是桌面程序的不一樣。如果你需要一個桌面系統,而且還想非常靈活的定製自己的Linux系統,想讓自己的機器跑得更歡,不介意在Linux系統安裝方面浪費一點時間,那麼你的唯一選擇就是Gentoo,盡情享受Gentoo帶來的自由快感吧!如果你需要的是一個伺服器系統,而且你已經非常厭煩各種Linux的配置,只是想要一個比較穩定的伺服器系統而已,那麼你最好的選擇就是CentOS了,安裝完成後,經過簡單的配置就能提供非常穩定的服務了。如果你需要的是一個堅如磐石的非常穩定的伺服器系統,那麼你的唯一選擇就是FreeBSD。如果你需要一個穩定的伺服器系統,而且想深入摸索一下Linux的各個方面的知識,想自己定製許多內容,那麼我推薦你使用Gentoo。

熱點內容
怎麼才能編譯本書 發布:2025-05-16 10:27:47 瀏覽:757
ssd伺服器電腦 發布:2025-05-16 10:26:25 瀏覽:827
水果忍者源碼 發布:2025-05-16 10:26:22 瀏覽:472
python中ord函數 發布:2025-05-16 10:14:25 瀏覽:340
電腦啟動後無法連接伺服器 發布:2025-05-16 10:06:39 瀏覽:984
jar包編譯過程 發布:2025-05-16 10:03:37 瀏覽:679
選舉源碼 發布:2025-05-16 09:58:59 瀏覽:749
超級訪問陳小春應采兒 發布:2025-05-16 09:43:29 瀏覽:479
緩存視頻合並工具最新版 發布:2025-05-16 09:35:03 瀏覽:195
花雨庭伺服器ip地址和埠 發布:2025-05-16 09:34:58 瀏覽:240