中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

Perl使用nginx FastCGI環境做WEB開發實例
來源:易賢網 閱讀:1280 次 日期:2014-09-25 11:58:59
溫馨提示:易賢網小編為您整理了“Perl使用nginx FastCGI環境做WEB開發實例”,方便廣大網友查閱!

Hello World

一個簡單的hello world例子:

代碼如下:

#!/usr/bin/env perl

use strict;

use warnings;

use CGI::Fast;

while(my $q = new CGI::Fast)

{

print $q->header("text/plain");

print "Hello World";

}

和CGI的區別僅在于多了一個循環來接受請求,CGI::Fast對象和CGI接口是一樣的,而且該腳本也可以當做CGI腳本使用。

搭建nginx + FastCGI 環境

Perl使用CGI::Fast包來提供FastCGI服務,該包提供兩種方式來啟動FastCGI進程,一個是直接使用該包提供的服務將當前進程變為FastCGI進程,另外一個是使用第三方工具spawn-fcgi來啟動。

nginx配置方式例子:

代碼如下:

location / {

fastcgi_pass 127.0.0.1:8184;

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

include fastcgi_params;

}

配置好nginx后,使用spawn-fcgi來啟動前面的Hello World:

代碼如下:

$ spawn-fcgi -n -a 127.0.0.1 -p 8184 -f ./main.pl

調試支持

在前面的命令行里使用了參數-n,讓spawn-fcgi不要fork出多個進程,并阻塞,允許用戶Ctrl+C來關閉,產品服務器可以去掉這個參數來充分利用服務器的多核來提供更高的并發數。我之前寫了一個bash腳本,允許在文件改動的情況下重啟服務,方便調試perl程序,代碼如下:

代碼如下:

#!/bin/bash

#PID文件和需要啟動的腳本

PID_FILE=service.pid

MAIN=main.pl

#關閉之前啟動的進程

term() {

test -e $PID_FILE || return

pid=`cat $PID_FILE`

kill -s -0 $pid || return

echo "Terminating $MAIN $pid"

rm -f $PID_FILE

kill $pid

wait $pid

}

#當前腳本退出的時候也關閉啟動了的FastCGI進程

trap "term;exit" SIGINT SIGTERM

while true

do

#首次啟動或者文件改動后都需要關閉之前的進程

term

#以no fork方式啟動腳本來調試,并將PID寫入到文件

spawn-fcgi -n -a 127.0.0.1 -p 8184 -f ./$MAIN &

pid=$!

echo $pid > $PID_FILE

echo "My Perl service started, pid = $pid"

#監控文件變化

files=`find . -name '*.pl' -o -name '*.pm' -o -name '*.html'`

md5=`md5sum $files|md5sum`

#wait for file change

while [[ `md5sum $files|md5sum` = "$md5" ]]

do

sleep 1

done

echo "File changes detected, restarting service"

done

該腳本已在Mac OSX和Linux下測試通過

路由系統

做Web開發離不開路由實現,來對不同請求來做出特定的響應。

路由請求依賴HTTP Method和URI兩部分,因此主要就是需要這兩者來做分派。

在CGI中可以通過環境變量REQUEST_METHOD和REQUEST_URI來獲取請求方法和URI。

因此一個簡單的路由系統實際上可以分解為一個二級的map,注冊路由實際上就是往這個map里放入規則對應的處理函數,而分派請求則是從這個map里根據規則獲取對應的處理函數,一個簡單的例子:

代碼如下:

my %routers = ();

sub not_found

{

print "Status: 404\n";

print "Content-Type: text/html\n\n";

print<<EOF

<html>

<body>

<h1>404 Not found</h1>

Cannot find $ENV{REQUEST_PATH}.

</body>

</html>

EOF

}

sub add_rule

{

my ($method, $path, $callback) = @_;

my $handlers = $routers{$method};

$handlers = $routers{$method} = {} if not $handlers;

$handlers->{$path} = $callback;

}

sub dispatch

{

my $q = shift;

my $method = $ENV{REQUEST_METHOD};

my $uri = $ENV{REQUEST_URI};

$uri =~ s/\?.*$//;

my $handler = ($routers{$method} || {})->{$uri} || not_found;

eval

{

&$handler($q);

};

print STDERR "Failed to handle $method $uri: $@\n" if $@;

}

使用這個路由系統的例子:

代碼如下:

sub index

{

my ($q) = @_;

print $q->header('text/plain');

print "Hello World!";

}

router::add_rule('GET', '/', \&index);

模板系統

perl提供了大量的模板系統的實現,我個人最喜歡的是Template Toolkit,文檔也非常豐富,網站是 。

將前面的index修改為使用模板的例子:

代碼如下:

use Template;

my $tt = new Template({INCLUDE_PATH => 'templates', INTERPOLATE => 1});

sub index

{

my ($q) = @_;

my $output = '';

print $q->header('text/html');

$tt->process('index.html', {world => 'World'}, $output) || die $tt->error();

print $output;

}

其中templates/index.html文件內容如下:

代碼如下:

<html>

<head><title>Demo</title></head>

<body>

Hello ${world}

</body>

</html>

完!

更多信息請查看IT技術專欄

更多信息請查看腳本欄目
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
香蕉精品999视频一区二区| 国产欧美精品xxxx另类| 在线日韩av| 国产人成一区二区三区影院| 欧美日韩成人在线播放| 美女精品在线观看| 久久久久成人网| 久久精品人人做人人爽| 亚洲免费中文字幕| 亚洲伊人观看| 亚洲免费一在线| 亚洲伊人一本大道中文字幕| 亚洲欧美另类在线观看| 香蕉久久精品日日躁夜夜躁| 亚洲尤物视频网| 亚洲免费在线| 亚洲淫性视频| 欧美一乱一性一交一视频| 亚洲欧美影音先锋| 欧美亚洲日本网站| 久久久久久夜| 欧美大片91| 欧美性大战久久久久| 欧美色欧美亚洲高清在线视频| 欧美日韩午夜在线| 国产精品国产三级国产普通话蜜臀 | 国产精品福利片| 欧美日韩精品一区二区在线播放| 模特精品在线| 欧美午夜不卡在线观看免费| 国产精品久久久久久亚洲毛片| 欧美日韩精品二区| 欧美电影在线观看完整版| 欧美黄色免费| 欧美日韩国产高清| 国产精品入口夜色视频大尺度| 国产精品一区二区在线| 国内精品嫩模av私拍在线观看| 韩国一区二区三区美女美女秀| 亚洲黑丝一区二区| 亚洲私人影院在线观看| 久久精品国产亚洲a| 欧美好骚综合网| 欧美乱人伦中文字幕在线| 国产精品久久久久久久app| 国产综合久久| 亚洲日韩欧美视频一区| 亚洲一区二区三区中文字幕在线| 亚洲欧美国产高清va在线播| 久久免费观看视频| 欧美精品在线免费| 国产精品草草| 伊人久久综合| 亚洲综合色视频| 久久一本综合频道| 国产精品h在线观看| 激情久久久久久久久久久久久久久久| 亚洲第一页自拍| 日韩午夜剧场| 久久久久国产精品人| 欧美电影免费| 国产精品中文在线| 亚洲欧洲日本国产| 久久精彩免费视频| 国产精品日本精品| 亚洲国产另类久久精品| 久久精品免费观看| 欧美午夜国产| 欧美成人精品高清在线播放| 欧美精品情趣视频| 国产亚洲在线| 亚洲先锋成人| 欧美精品一区二区在线观看| 国产在线麻豆精品观看| 亚洲午夜av在线| 免费国产一区二区| 国产一区二区无遮挡| 亚洲男人影院| 欧美三级电影大全| 国产精品啊啊啊| 久热这里只精品99re8久| 亚洲午夜精品久久久久久app| 国产亚洲精品综合一区91| 久久艳片www.17c.com| 亚洲性线免费观看视频成熟| 在线日韩av永久免费观看| 国产精品www| 国产精品成人播放| 亚洲欧美日韩国产成人精品影院| 一区二区三区视频在线| 久久综合色播五月| 国产农村妇女毛片精品久久莱园子 | 免费一区二区三区| 国产尤物精品| 欧美一区二区免费观在线| 欧美视频日韩视频在线观看| 99视频一区二区三区| 欧美激情精品久久久久| 亚洲韩国一区二区三区| 欧美激情黄色片| 亚洲精品偷拍| 欧美日韩一区二区三区四区在线观看| 亚洲精品欧美| 欧美日韩午夜在线| 亚洲在线播放| 国产欧美日韩亚洲一区二区三区 | 欧美成人精品h版在线观看| 狠狠狠色丁香婷婷综合激情| 久久在线播放| 91久久亚洲| 欧美日韩麻豆| 亚洲一二区在线| 国产乱子伦一区二区三区国色天香| 亚洲社区在线观看| 国产精品黄视频| 欧美影视一区| 亚洲国产日韩综合一区| 欧美精品国产| 亚洲主播在线播放| 国产一区二区三区黄视频| 久久精品欧美日韩精品| 在线电影一区| 欧美精品videossex性护士| 99日韩精品| 国产精品视频免费观看www| 久久99在线观看| 在线观看精品| 欧美日产国产成人免费图片| 亚洲欧美精品| 亚洲国产精品一区二区尤物区| 欧美一区二区成人6969| 久久久久久久久久码影片| 久热精品在线| 在线成人av| 久久精品首页| 影音先锋亚洲电影| 久久伊人免费视频| 国自产拍偷拍福利精品免费一| 亚洲精品永久免费| 久久亚洲综合| 精品1区2区| 在线天堂一区av电影| 亚洲小视频在线观看| 黑人巨大精品欧美一区二区| 开心色5月久久精品| 亚洲另类自拍| 国产在线观看91精品一区| 国产精品一区二区欧美| 国产婷婷色一区二区三区四区| 亚洲在线国产日韩欧美| 亚洲第一黄网| 国产精品入口夜色视频大尺度| 欧美高清视频一区二区| 欧美一二区视频| 一本色道久久综合亚洲精品不卡| 国产一区二区三区在线播放免费观看 | 精品91久久久久| 欧美日韩综合| 女同一区二区| 久久久国产一区二区三区| 亚洲伊人第一页| 亚洲麻豆av| 亚洲黄色尤物视频| 国产真实乱偷精品视频免| 国产精品h在线观看| 欧美成人国产va精品日本一级| 久久国产精品黑丝| 先锋影音久久| 亚洲欧美日韩综合国产aⅴ| av成人免费在线| 亚洲国产欧美在线人成| 韩日视频一区| 国际精品欧美精品| 国产一级揄自揄精品视频| 国产区精品在线观看| 欧美日韩亚洲网| 欧美日韩精品不卡| 欧美精彩视频一区二区三区| 欧美a级片网| 欧美高清视频在线| 国产伦精品免费视频| 欧美成人在线免费观看| 久久久国产精品一区二区三区| 亚洲与欧洲av电影| 亚洲欧美在线播放| 亚洲私人影院在线观看| 欧美日韩大陆在线| 亚洲精品国产精品国自产观看| 欧美手机在线视频| 在线观看视频一区二区欧美日韩| 国产亚洲精品久久久久婷婷瑜伽| 欧美性久久久| 国产精品成人一区二区三区吃奶 | 久久精彩免费视频| 久久精品亚洲一区二区三区浴池| 午夜精品一区二区三区在线| 久久精品72免费观看| 黑人巨大精品欧美一区二区小视频| 麻豆成人综合网| 欧美成人精品1314www|