متى يجب استخدام Perl CGI بدلا من PHP (أو العكس بالعكس)?

StackOverflow https://stackoverflow.com/questions/824730

  •  05-07-2019
  •  | 
  •  

سؤال

هواية الأغراض ، لدي مساحة مشتركة على استضافة الخادم التي تقدم ، كما أن العديد منهم سواء PHP و Perl CGI.قرأت في عدة أماكن من أن البرامج النصية CGI عفا عليها الزمن الآن ، أعتقد أساسا عن مشاكل الأداء (مثل هو PHP أو الفانيليا Perl CGI أسرع ؟ ).

ولكن منذ بدأت دراسة Perl, أنا لا أريد أن نضيع الوقت في تنفيذ حلول في بي ان هي أسهل طريقة (أو ممكن فقط) في بيرل.

أيضا هناك النمطي القضايا ، أنا على علم CPAN (التي هي الوجود ، لم المحتوى) ، ولكن لم تكن مألوفة مع PHP المكتبات (على الرغم من أنني لا أشك في أنها موجودة).أنا لست مستعدا لكتابة تسجيل الدخول-الإجراء أو الأساسية إدارة المستخدم من الصفر لمدة 10^10 الوقت.

لا ترف في هذه المرحلة إلى إضاعة الكثير من الوقت في البحث عن هواية المشاريع إما ففكرت دعونا نسأل الخبراء عن headstart.

هل كانت مفيدة؟

المحلول

إن "عفا عليها الزمن"-نيس CGI هو حقا فقط عامل إذا كنت تفعل كبيرة ومعقدة المواقع مع الكثير من الصفحات.

كثير من الناس دفع فكرة أن CGI هو عفا عليها الزمن لا يفهمون حقا ما CGI.هناك سوء فهم واسع النطاق بأن CGI هو بطبيعته بيرل القائمة على التكنولوجيا.كثير من الناس هجوم CGI كوسيلة لوحة من cultic الهجمات على بيرل دعما مهما كانت اللغة التي تدعمها.إذا كنت تريد أن تكون حقيقية تقني, تحتاج إلى فهم القضايا الأساسية وجعل الاختيار على أساس وقائع الحالة.

CGI مع واجهة الويب الذي يسمح لك لكتابة الصفحات التفاعلية في أي لغة--حتى befunge.عندما يحصل على ملقم طلب صفحة التحكم بواسطة برنامج نصي CGI الملقم تشغيل البرنامج النصي وإرجاع النتائج إلى الطالب.

إذا كانت لغة البرمجة يتطلب VM, مترجم أو مترجم تحميل كل مرة ينفذ ، ثم في هذا الوقت سوف تكون هناك حاجة في كل مرة الصفحة الخاصة بك الوصول إليها.

CGI مسرعات مثل FastCGI, mod_php, mod_perl وما إلى ذلك ، تبقى مترجم/VM في الذاكرة في كل مرة ، قد تبقى المكتبات تحميل, وحتى ذاكرة التخزين المؤقت بايت كود من النصوص للحد من البرنامج النصي لبدء الحمل.

إذا كنت ترغب بجعل بسيط الشخصية أو هواية الموقع, CGI سوف يكون على ما يرام.لذلك سوف PHP.

إذا كان موقع الويب الخاص بك ينبغي أن تنمو إلى ضرورة أسرع التكنولوجيا ، يمكنك الانتقال إلى mod_perl ، FastCGI ، أو غيرها من CGI تقنيات تسريع.

ما اللغة التي تستخدمها يجب أن يحدده الأدوات يوفر وكيف أنها تناسب احتياجاتك.

  1. تقديم قائمة من القدرات التي تحتاج إليها.
  2. تقديم قائمة من قواطع الصفقة.
  3. الآن التحقق من الممكن toolsets ضد هاتين القائمتين.
  4. أي واحد يخرج أفضل ؟ اختبار.
  5. هل هو سيء ؟ عبر قبالة الخاص بك القائمة ، انتقل إلى الخطوة 4.

كما أوصي ضد باستخدام befunge.فقط لأنه من الممكن هذا لا يعني يجب عليك استخدامها.


تحديث: كما mpeters ، mod_perl, mod_php, mod_ruby, et منها هي أكثر بكثير من مجرد CGI مسرعات;أنها توفر إمكانية الوصول إلى أباتشي API.كما أنها بمثابة CGI مسرعات ، ولكن يمكن أن تفعل الكثير أكثر من هذا بكثير.

FastCGI هو محض CGI مسرع.

تحديث 2: PHP و CGI لا يستبعد بعضها بعضا. PHP يمكن تثبيت CGI.PHP غالبا ما يستخدم مع FastCGI.

نصائح أخرى

وهذه مسألة ذاتية إلى حد ما لتحديد ما يجب استخدامها لهواية. قررت أن تعلم بيرل كهواية بعد النظر في PHP ولا تروق حقيقة أنني لا يمكن أن تقرأ أكثر من PHP من هناك والتي ينالها قائمة وظائف مدمج.

وكانت

والأشياء القليلة الأولى فعلت البرامج النصية CGI لأشكال الاتصال ومولد ألبوم الصور. كنت على شبو استضافة مشتركة الخطة وكنت لا تحصل على أي مشاكل الأداء حتى مشكلة الأداء أبدا حيز اللعب.

وبدلا من ذلك، ضمان وجود comp.lang.perl.misc وCPAN أنني أبدا إعادة النظر في قراري بعدم الخوض في PHP.

في الوقت نفسه، أدركت معظم المحتوى على مواقع الويب الخاص بي هو ثابت ولدت مرة واحدة، وحتى الآن وأنا أكتب مخطوطات برل لتوليد المحتوى حاليا.

وهكذا، جوابي هو، واختيار مشروع صغير، وأي شيء تفعله، وتنفيذ ذلك باستخدام بيرل والمناسبة وحدات CPAN ومعرفة ما إذا كنت ترغب في ذلك.

إذا كنت تستخدم PHP او Perl تم الإنتهاء من رفع منظور الكثير في الطريق أن الفرق بين webapp مكتوب في PHP و C هو موضع نقاش.إذا كان الفرق يهم حقا لكنا جميعا كتابة C, أو الجمعية.

PHP هي بطيئة, ولكن هذا ليس وقف ويكيبيديا, Facebook, Yahoo من استخدامه على نطاق واسع.

هناك نوعان من الأسباب الرئيسية لا يهم ، من توسيع المنظور ، اللغة التي تختارها:

  1. استخدام التخزين المؤقت الوكيل عكسي مثل الحبار.بتفريغ معظم أباتشي عبء العمل ، يمكنك خفض CGI الاحتجاج الحمل بشكل كبير.
  2. زيادة الويب الخاص بك المستوى السهل.إنه رفع قاعدة البيانات الخاصة بك الطبقة التي من الصعب.يمكنك دائما إضافة آخر ويب إلى المزرعة.إذا كنت يمكن أن تخدم 1000 طلب في الثانية مع mod_php و 500 طلب في الثانية مع CGI, إذا كان أرخص و أسرع بالنسبة لك لتطوير CGI, تفعل ذلك.سوف تحتاج مرتين على شبكة الإنترنت العديد من رؤساء ، ولكن إما:
    1. كنت في الجزء السفلي من 90% من شبكة الإنترنت ، فقط حقا بحاجة واحدة ويب على أي حال.
    2. أنت في أعلى 10% من شبكة الإنترنت ، وتحتاج العديد من مزودات الويب -- ولكن كنت قد حصلت على ما يكفي من المرور إلى تبرير تكلفة إضافية.

اختيار اللغة التي أنت وفريقك يمكن أن تتطور في أكثر كفاءة.

وهنا هو بسيط "مرحبا العالم" المثال الذي يمتد تحت CGI باستخدام معتصمون microframework على شبكة الإنترنت:

use strict;
use warnings;

{
    package MyApp;
    use base 'Squatting';
    use base 'Squatting::On::CGI';
}

{ 
    package MyApp::Controllers;
    use Squatting ':controllers';

    our @C = (
        C(
            Index => [ '/' ],
            get   => sub { 
                my ( $self ) = @_;
                my $v = $self->v;
                $v->{say} = 'hello world!';
                $self->render( 'hello' );
            },
        ),
    );
}

{
    package MyApp::Views;
    use Squatting ':views';
    use HTML::AsSubs;

    our @V = (
        V(  'html',

            layout => sub { 
                my ( $self, $v, @yield ) = @_;
                html (
                    head ( title( 'My CGI App' ) ),
                    body ( @yield ),
                )->as_HTML;
            },

            hello => sub {
                my ( $self, $v ) = @_;
                p ( $v->{say} );
            },
        ),
    );
}

use CGI;
my $q = CGI->new;
MyApp->init;
MyApp->relocate('/cgi-bin/myapp.cgi');
MyApp->cgi($q);

وحفظ باسم "myapp.cgi" ومكان في حياتك المجموعة الاستشارية لاندونيسيا بن.

وأنا استخدم كل من بيرل وPHP للمواقع - لأسباب تاريخية، وذلك أساسا بيرل في العمل وPHP في المنزل. لا أعتقد أن هناك الكثير للاختيار بينهما.

إذا صفحاتك HTML معظمها ثابتة مع كمية صغيرة فقط من الحساب، PHP أسهل بعض الشيء، لأنه مضمن في HTML على أي حال.

وأجد PHP أكثر انضباطا، وبالتالي في بعض الأحيان أكثر من الحد، لغة من بيرل. الكمثرى هي مشابهة جدا لكبان - ليست كبيرة كما أعتقد، ولكن بعد ذلك CPAN هو كبير بحيث انها حصلت على الكثير من خبث في ذلك.

وHTH

وكولن

إذا كنت تستخدم استضافة, في كثير من الحالات PHP سيكون تشغيل CGI أيضا.إذا كنت لا ترغب في تشغيل FastCGI أو mod_perl ، يمكنك استخدام CGI::إطار تطبيق.CGI::التطبيق سوف تعمل مع FastCGI أو mod_perl أيضا ، ولكن على عكس محفز سيتم تشغيل CGI أيضا.المحفز و CGI::التطبيق أيضا يمكن تشغيل مع ملقمات ويب الخاصة بهم.

وكلا PHP و Perl لحظات، ولكن هذا هو شخصي حقا. بيرل لديها أطر الضخمة المتاحة على CPAN التي يمكن أن تجعل من العمل كذلك، أو أفضل، من PHP، حتى في بيئة CGI بحتة. وفي الوقت نفسه، PHP يتمتع بتأييد واسع، ونصف طن من الخروج من ميزات مربع لجعل موقع الويب برمجة بسيطة. الخيار، بالنسبة لي، يتلخص تفضيل شخصي. أنا شخصيا أفضل استخدام بيرل من أن تلكأ مع محاولة العثور على جميع الطرق وظيفية لفعل الأشياء في PHP. حظا سعيدا!

محفز مع <لأ href = "http://template-toolkit.org" يختلط = "noreferrer نوفولو"> أدوات قالب .

sub hello :Path('/hello') :Args(0) {
    my ( $self, $c ) = @_;

    # Hello World
    $c->response->body( $c->welcome_message );
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">
<html>
  <head>
    <title>[% title %]</title>
  </head>
  <body> 
    <div id="header">
      <a href="/index.html" class="logo" alt="Home Page"></a>
      <h1 class="headline">[% title %]</h1>
    </div>

    [% content %]

    <div id="footer">
      <div id="copyright">
        &copy; [% copyright %]
      </div>
    </div>
  </body>
</html>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top