婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Perl使用nginx FastCGI環(huán)境做WEB開(kāi)發(fā)實(shí)例

Perl使用nginx FastCGI環(huán)境做WEB開(kāi)發(fā)實(shí)例

熱門(mén)標(biāo)簽:惠州龍門(mén)400電話要怎么申請(qǐng) 萬(wàn)利達(dá)百貨商場(chǎng)地圖標(biāo)注 上海企業(yè)外呼系統(tǒng) 河南虛擬外呼系統(tǒng)公司 外呼電信系統(tǒng) okcc外呼系統(tǒng)怎么調(diào)速度 智能機(jī)器人電銷(xiāo)神器 熱門(mén)電銷(xiāo)機(jī)器人 電話機(jī)器人哪里有賣(mài)

Hello World

一個(gè)簡(jiǎn)單的hello world例子:

復(fù)制代碼 代碼如下:

#!/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的區(qū)別僅在于多了一個(gè)循環(huán)來(lái)接受請(qǐng)求,CGI::Fast對(duì)象和CGI接口是一樣的,而且該腳本也可以當(dāng)做CGI腳本使用。

搭建nginx + FastCGI 環(huán)境

Perl使用CGI::Fast包來(lái)提供FastCGI服務(wù),該包提供兩種方式來(lái)啟動(dòng)FastCGI進(jìn)程,一個(gè)是直接使用該包提供的服務(wù)將當(dāng)前進(jìn)程變?yōu)镕astCGI進(jìn)程,另外一個(gè)是使用第三方工具spawn-fcgi來(lái)啟動(dòng)。
nginx配置方式例子:

復(fù)制代碼 代碼如下:

        location / {
            fastcgi_pass   127.0.0.1:8184;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }

配置好nginx后,使用spawn-fcgi來(lái)啟動(dòng)前面的Hello World:
復(fù)制代碼 代碼如下:

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


調(diào)試支持

在前面的命令行里使用了參數(shù)-n,讓spawn-fcgi不要fork出多個(gè)進(jìn)程,并阻塞,允許用戶(hù)Ctrl+C來(lái)關(guān)閉,產(chǎn)品服務(wù)器可以去掉這個(gè)參數(shù)來(lái)充分利用服務(wù)器的多核來(lái)提供更高的并發(fā)數(shù)。我之前寫(xiě)了一個(gè)bash腳本,允許在文件改動(dòng)的情況下重啟服務(wù),方便調(diào)試perl程序,代碼如下:

復(fù)制代碼 代碼如下:

#!/bin/bash
#PID文件和需要啟動(dòng)的腳本
PID_FILE=service.pid
MAIN=main.pl

#關(guān)閉之前啟動(dòng)的進(jìn)程
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
}
#當(dāng)前腳本退出的時(shí)候也關(guān)閉啟動(dòng)了的FastCGI進(jìn)程
trap "term;exit" SIGINT SIGTERM
while true
do
#首次啟動(dòng)或者文件改動(dòng)后都需要關(guān)閉之前的進(jìn)程
    term
#以no fork方式啟動(dòng)腳本來(lái)調(diào)試,并將PID寫(xiě)入到文件
    spawn-fcgi -n -a 127.0.0.1 -p 8184 -f ./$MAIN 
    pid=$!
    echo $pid > $PID_FILE
    echo "My Perl service started, pid = $pid"
#監(jiān)控文件變化
    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下測(cè)試通過(guò)

路由系統(tǒng)

做Web開(kāi)發(fā)離不開(kāi)路由實(shí)現(xiàn),來(lái)對(duì)不同請(qǐng)求來(lái)做出特定的響應(yīng)。
路由請(qǐng)求依賴(lài)HTTP Method和URI兩部分,因此主要就是需要這兩者來(lái)做分派。
在CGI中可以通過(guò)環(huán)境變量REQUEST_METHOD和REQUEST_URI來(lái)獲取請(qǐng)求方法和URI。
因此一個(gè)簡(jiǎn)單的路由系統(tǒng)實(shí)際上可以分解為一個(gè)二級(jí)的map,注冊(cè)路由實(shí)際上就是往這個(gè)map里放入規(guī)則對(duì)應(yīng)的處理函數(shù),而分派請(qǐng)求則是從這個(gè)map里根據(jù)規(guī)則獲取對(duì)應(yīng)的處理函數(shù),一個(gè)簡(jiǎn)單的例子:

復(fù)制代碼 代碼如下:

my %routers = ();

sub not_found
{
    print "Status: 404\n";
    print "Content-Type: text/html\n\n";
    printEOF
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 $@;
}


使用這個(gè)路由系統(tǒng)的例子:
復(fù)制代碼 代碼如下:

sub index
{
    my ($q) = @_;
    print $q->header('text/plain');
    print "Hello World!";
}

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


模板系統(tǒng)

perl提供了大量的模板系統(tǒng)的實(shí)現(xiàn),我個(gè)人最喜歡的是Template Toolkit,文檔也非常豐富,網(wǎng)站是 http://www.template-toolkit.org/ 。

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

復(fù)制代碼 代碼如下:

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文件內(nèi)容如下:
復(fù)制代碼 代碼如下:

html>
head>title>Demo/title>/head>
body>
Hello ${world}
/body>
/html>

完!

您可能感興趣的文章:
  • Windows10下hyperledger fabric1.4環(huán)境搭建過(guò)程圖解
  • 在EditPlus中配置Perl開(kāi)發(fā)編譯環(huán)境
  • Perl操作系統(tǒng)環(huán)境變量的腳本代碼
  • Windows10下安裝配置 perl 環(huán)境的詳細(xì)教程

標(biāo)簽:秦皇島 綏化 百色 綿陽(yáng) 周口 周口 淮安 合肥

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Perl使用nginx FastCGI環(huán)境做WEB開(kāi)發(fā)實(shí)例》,本文關(guān)鍵詞  Perl,使用,nginx,FastCGI,環(huán)境,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Perl使用nginx FastCGI環(huán)境做WEB開(kāi)發(fā)實(shí)例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Perl使用nginx FastCGI環(huán)境做WEB開(kāi)發(fā)實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    97aⅴ精品视频一二三区| 亚洲欧美国产三级| 天天av天天翘天天综合网 | 制服丝袜激情欧洲亚洲| 香蕉av福利精品导航| 欧美视频在线观看一区| 亚洲国产另类精品专区| 777xxx欧美| 国产美女娇喘av呻吟久久| 久久精品在线免费观看| 福利91精品一区二区三区| 自拍偷拍欧美激情| 一本到不卡精品视频在线观看| 亚洲综合丝袜美腿| 日韩欧美色综合| 国产大陆a不卡| 一区二区三区在线不卡| 8x福利精品第一导航| 国产伦精品一区二区三区视频青涩| 国产欧美日韩亚州综合| 欧美中文字幕亚洲一区二区va在线 | 国产成人av资源| 一区二区国产视频| 精品日韩在线一区| 91蜜桃网址入口| 免费人成黄页网站在线一区二区| 久久久综合视频| 欧美性一二三区| 国产一区二区按摩在线观看| 亚洲男人天堂一区| 日韩视频一区二区三区| 9l国产精品久久久久麻豆| 日韩av午夜在线观看| 欧美激情在线观看视频免费| 欧美喷水一区二区| 成人网页在线观看| 日本视频中文字幕一区二区三区 | 国产欧美一区二区三区鸳鸯浴 | 亚洲蜜臀av乱码久久精品| 91精品国产综合久久久久久久 | 在线观看日韩高清av| 国产又粗又猛又爽又黄91精品| 亚洲精品国产视频| 久久女同精品一区二区| 欧美三区在线视频| 成人av在线看| 极品少妇一区二区三区精品视频| 亚洲精品乱码久久久久久| 欧美激情自拍偷拍| 精品蜜桃在线看| 欧美日本一区二区在线观看| 成人aaaa免费全部观看| 黑人巨大精品欧美黑白配亚洲| 亚洲自拍都市欧美小说| 国产午夜亚洲精品理论片色戒| 欧美另类久久久品| 色吊一区二区三区| 高清国产午夜精品久久久久久| 看片的网站亚洲| 日韩精品一卡二卡三卡四卡无卡| 欧美高清一级片在线观看| 精品乱码亚洲一区二区不卡| 7777女厕盗摄久久久| 欧美性色黄大片手机版| 日本久久精品电影| 99re这里都是精品| 成人午夜又粗又硬又大| 国产成人综合亚洲91猫咪| 美日韩一区二区| 亚洲成人激情av| 亚洲一区视频在线观看视频| 亚洲欧美日本在线| 亚洲欧美国产高清| 亚洲影视在线播放| 亚洲一区二区三区视频在线 | 91国偷自产一区二区三区观看| 成人av午夜电影| 成人一区二区三区| 成人av影视在线观看| 99视频一区二区| 一本到不卡精品视频在线观看| 一本一道综合狠狠老| 色乱码一区二区三区88| 色老汉一区二区三区| 欧美三电影在线| 在线不卡的av| 精品sm捆绑视频| 国产日韩欧美激情| 亚洲日本护士毛茸茸| 一区二区三区蜜桃| 亚洲一区日韩精品中文字幕| 亚洲成国产人片在线观看| 日韩av一区二区三区| 国产一区视频网站| 91在线云播放| 欧美日韩高清一区二区| 日韩精品一区二区三区在线| 2020国产成人综合网| 中文字幕一区二区三区不卡在线 | 成人一区二区视频| 日本久久电影网| 日韩西西人体444www| 久久久777精品电影网影网| 国产精品素人视频| 亚洲成a人片综合在线| 免费高清在线视频一区·| 国产成人精品免费视频网站| 色婷婷激情久久| 欧美成人欧美edvon| 亚洲国产成人私人影院tom| 亚洲精品国久久99热| 精品一区二区三区欧美| 99久久免费精品| 日韩一区二区三区高清免费看看| 国产视频一区在线播放| 亚洲国产精品视频| 国产在线精品免费| 91美女片黄在线| 久久蜜桃香蕉精品一区二区三区| 亚洲欧美日韩精品久久久久| 精品一区二区三区免费播放| 99riav一区二区三区| 26uuu亚洲综合色欧美| 亚洲精品国产精华液| 国产一区在线观看麻豆| 欧美在线免费播放| 国产欧美日韩不卡免费| 五月综合激情婷婷六月色窝| 国产成人精品亚洲777人妖| 欧美日韩国产色站一区二区三区| 中文字幕av在线一区二区三区| 午夜精品久久久久久久久久久| www.欧美色图| 精品对白一区国产伦| 午夜日韩在线电影| 91香蕉视频在线| 久久久www成人免费毛片麻豆 | 亚洲精品第一国产综合野| 韩国精品免费视频| 欧美一区二区三区小说| 亚洲免费观看高清在线观看| 国产麻豆日韩欧美久久| 91精品国产91久久久久久最新毛片| 成人欧美一区二区三区小说| 高清不卡一区二区在线| 26uuu国产日韩综合| 日本亚洲电影天堂| 欧美日韩精品一区二区三区| 国产精品成人一区二区艾草 | 91精品婷婷国产综合久久| 亚洲视频免费看| 99久久精品免费| 国产日韩欧美精品在线| 国产精品一区2区| 久久人人97超碰com| 韩国精品久久久| 久久人人爽人人爽| 国产精品77777| 国产亚洲自拍一区| 国产盗摄精品一区二区三区在线| 久久五月婷婷丁香社区| 精品一区二区三区在线播放视频| 日韩精品一区二区在线| 男人的天堂亚洲一区| 欧美一区二区三区四区久久| 日韩国产在线观看| 日韩一区二区在线看| 日韩电影一区二区三区四区| 3d成人h动漫网站入口| 免费一级欧美片在线观看| 欧美成人国产一区二区| 精品一区二区在线播放| 久久网这里都是精品| 成人激情视频网站| 亚洲精品五月天| 欧美视频中文一区二区三区在线观看| 亚洲观看高清完整版在线观看| 欧美美女网站色| 久久精品72免费观看| 精品91自产拍在线观看一区| 国产91精品久久久久久久网曝门| 国产三级精品三级在线专区| 成人高清av在线| 一区二区日韩av| 日韩欧美国产一区二区在线播放| 国产精品一级黄| 亚洲日本在线看| 337p亚洲精品色噜噜噜| 国产乱码一区二区三区| 国产精品国产三级国产有无不卡 | 一区二区视频在线| 欧美电影一区二区| 国产精品一二三四五| 亚洲欧美日韩成人高清在线一区| 7777精品伊人久久久大香线蕉的| 蜜臀av一区二区在线观看| 欧美国产一区在线| 欧美午夜电影网| 国产精品一区一区三区| 亚洲六月丁香色婷婷综合久久|