Skip to main content
 首页 » 编程设计

php之将 PHP 伪代码转换为 Tornado/Python

2025年05月04日19JeffreyZhao

我非常习惯使用 PHP – 创建一个新的 .php 文件,输入所有内容,将它与一些 HTML 混合,包含/需要不同的 .php/.html 文件等。

我刚开始学习使用 Tornado,我很难理解 Tornado 的基本原理和构造。

为了开始了解 Tornado 到底有多少工作原理(除了,是的,当然,阅读他们的文档),我试图在 PHP 中获取一些基本的东西并在 Tornado 中重新创建它。

例如,在 PHP 中,我有我的 index.php 页面。在该页面上,我有一个 email 输入和 password 输入。当用户提交表单时,action 被设置为 login.php,我们被发送到 login.php 其中的“登录函数”被称为对用户进行身份验证。如果一切正常,将设置 $_SESSION 变量,然后登录。如果出现错误,将在 login.php

上显示错误消息

与 Tornado 相关的等效“伪代码”是什么?

一些基本的、非常不完善的 python:

import os 
 
import tornado.web 
import tornado.ioloop 
 
root = os.path.dirname(__file__) 
port = 8888 
 
class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
        self.render("index.html") 
 
class LoginHandler(tornado.web.RequestHandler): 
    def get(self): 
        self.render("login.html", title="Login to your account!") 
 
    def post(self): 
        useremail = self.get_argument("useremail", None) 
        password = self.get_argument("password", None) 
        self.render("login.html", title="Login to your account!") 
 
def main(): 
    application = tornado.web.Application([ 
        (r"/", MainHandler), 
        (r"/login", LoginHandler), 
        (r"/css/(.*)", tornado.web.StaticFileHandler, {"path": os.path.join(root, 'css')}), 
        (r"/pictures/(.*)", tornado.web.StaticFileHandler, {"path": os.path.join(root, 'pictures')}), 
    ]) 
    application.listen(port) 
    tornado.ioloop.IOLoop.instance().start() 
 
if __name__ == "__main__": 
    main() 

非常感谢对我的转换提供的任何帮助。这只是一种与我习惯的做事方式截然不同的方式,像这样的简单过程的伪代码肯定会有所帮助。无论如何,谢谢大家。

请您参考如下方法:

你可以使用react它是使用 PHP 的事件驱动、非阻塞 I/O。

这是一个简单的 HTTP 服务器监听端口 1337 的例子:

<?php 
 
  $i = 0; 
 
  $app = function ($request, $response) use (&$i) { 
      $i++; 
 
      $text = "This is request number $i.\n"; 
      $headers = array('Content-Type' => 'text/plain'); 
 
      $response->writeHead(200, $headers); 
      $response->end($text); 
 }; 
 
 $loop = React\EventLoop\Factory::create(); 
 $socket = new React\Socket\Server($loop); 
 $http = new React\Http\Server($socket); 
 
 $http->on('request', $app); 
 
 $socket->listen(1337); 
 $loop->run();