标签: cgi

从套接字读取1个字节一次与读取大块

有什么区别 - 性能方面 - 从套接字读取1个字节一次到读取大块?

我有一个C++应用程序,需要从Web服务器提取页面并逐行解析收到的页面.目前,我一次读取1个字节,直到遇到CRLF或达到最大1024字节.

如果读取大块(例如一次1024个字节)在性能方面要好得多,那么关于如何实现我目前所拥有的相同行为的任何想法(即能够一次存储和处理1个html行 - 直到CRLF还没有消耗后续的字节)?

编辑:

我买不起太大的缓冲区.由于应用程序用于嵌入式设备,因此我的代码预算非常紧张.我更喜欢只保留一个固定大小的缓冲区,最好一次只保留一个html行.这使我的解析和其他处理变得容易,因为我随时尝试访问缓冲区进行解析,我可以假设我正在处理一个完整的html行.

谢谢.

c c++ sockets cgi

6
推荐指数
2
解决办法
4653
查看次数

使用C/CGI管理会话

我正在寻找用C和CGI编写一些应用程序,现在我已经实现了URI编码/解码,HTML实体编码/解码,查询/ cookie解析器等基本功能.我需要管理会话.我该怎么做?例如,PHP如何管理会话?

c cgi

6
推荐指数
2
解决办法
1868
查看次数

apache服务器上的fcgi vs mod_fastcgi

我有一个apache服务器,我正在设置它fcgi.我正在考虑是否要设置量身定制的mod_fastcgi或普通的旧款cgi-fcgi.

mod-fastcgi似乎不支持"多路复用"功能fcgi,我正在构建的Web服务是一个非常高的流量服务,每分钟有几千个呼叫,我希望它们尽快处理.

任何建议或意见??

c++ apache cgi web-services fastcgi

6
推荐指数
1
解决办法
1223
查看次数

从Python调用非本机Java代码

我希望能够调用已经运行的Java jar中包含的某些方法(确保它将运行).我找到了像Jython这样的东西,但那些似乎只能访问Java的本机类等.

python java cgi

6
推荐指数
1
解决办法
459
查看次数

lighttpd:禁用 CGI 缓冲

有没有办法阻止 lighttpd 将 POST 缓冲到 CGI 可执行文件?

在我看来,所有请求在转发到 CGI 可执行文件之前都已完全缓冲在磁盘上,这使我无法以基于流的方式处理输入。

澄清一下,我只是在谈论转发到标准输入上的 CGI 可执行文件的请求;我已经验证了响应没有像那样缓冲,并且流输出确实是可能的。

cgi lighttpd

6
推荐指数
1
解决办法
920
查看次数

Python CGI - UTF-8不起作用

对于HTML5和Python CGI:

如果我写UTF-8元标记,我的代码不起作用.如果我不写,它就有效.

页面编码是UTF-8.

print("Content-type:text/html")
print()
print("""
    <!doctype html>
    <html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        ?ö??çü
    </body>
    </html>
""")
Run Code Online (Sandbox Code Playgroud)

此代码不起作用.

print("Content-type:text/html")
    print()
    print("""
        <!doctype html>
        <html>
        <head></head>
        <body>
            ?ö??çü
        </body>
        </html>
    """)
Run Code Online (Sandbox Code Playgroud)

但这个代码有效.

python html5 cgi utf-8 python-3.x

6
推荐指数
2
解决办法
4395
查看次数

Python 中的 sys.stdin 什么时候为 None ?

我正在尝试通过 IIS 将 Flask 作为简单的 CGI 应用程序运行。

我有以下代码:

from wsgiref.handlers import CGIHandler
from flask import Flask
app = Flask(__name__)

@app.route('/')
def main():
    return 'Woo woo!'

CGIHandler().run(app)
Run Code Online (Sandbox Code Playgroud)

我在 Windows 上运行 Python 3.3。我收到以下错误:

File "C:\Python33\lib\wsgiref\handlers.py", 
line 509, in __init__(self, sys.stdin.buffer, sys.stdout.buffer, sys.stderr, )
AttributeError: 'NoneType' object has no attribute 'buffer' ".
Run Code Online (Sandbox Code Playgroud)

我添加了一些日志代码,事实证明sys.stdinNone.

Python 作为 CGI 处理程序添加到 IIS 中,如下所示:

Request path: *.py
Executable: C:\Windows\py.exe -3 %s %s
Run Code Online (Sandbox Code Playgroud)

那么,为什么 sys.stdin None 以及如何修复它?

编辑

看起来 sys.stdin 是 None 因为文件描述符无效

python iis cgi flask python-3.3

6
推荐指数
1
解决办法
2112
查看次数

Python CGIHTTPServer 默认目录

我有以下用于 CGI 处理 HTTP 服务器的最小代码,这些代码源自内管上的几个示例:

#!/usr/bin/env python

import BaseHTTPServer
import CGIHTTPServer
import cgitb;

cgitb.enable()  # Error reporting

server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", 8000)
handler.cgi_directories = [""]

httpd = server(server_address, handler)
httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)

然而,当我执行脚本并尝试使用 CGI 在同一目录中运行测试脚本时http://localhost:8000/test.py,我看到的是脚本的文本,而不是执行的结果。

权限都设置正确,测试脚本本身不是问题(因为python -m CGIHTTPServer当脚本驻留在 cgi-bin 中时,我可以使用 运行它)。我怀疑这个问题与默认的 CGI 目录有关。

我怎样才能让脚本执行?

python cgi httpserver cgihttprequesthandler cgihttpserver

6
推荐指数
1
解决办法
7284
查看次数

如何在 Python 中通过 cgi 部署 zip 文件(或其他二进制文件)?

我正在使用 Python 和 CGI​​ 编写一个小型网站,用户可以在其中上传 zip 文件和下载其他用户上传的文件。目前,我可以正确上传 zip 文件,但是在将文件正确发送给用户时遇到了一些麻烦。我的第一种方法是:

file = open('../../data/code/' + filename + '.zip','rb')

print("Content-type: application/octet-stream")
print("Content-Disposition: filename=%s.zip" %(filename))
print(file.read())

file.close()
Run Code Online (Sandbox Code Playgroud)

但很快我意识到我必须将文件作为二进制发送,所以我尝试:

print("Content-type: application/octet-stream")
print("Content-Disposition: filename=%s.zip" %(filename))
print('Content-transfer-encoding: base64\r')
print( base64.b64encode(file.read()).decode(encoding='UTF-8') )
Run Code Online (Sandbox Code Playgroud)

以及它的不同变体。它只是行不通;Apache 引发“来自脚本的格式错误的标头”错误,所以我想我应该以其他方式对文件进行编码。

python binary zip cgi python-3.x

6
推荐指数
2
解决办法
4638
查看次数

如何在 Ubuntu 16.04 上的 apache2 服务器上运行 python cgi 脚本?

我是新手,所以我看了一些教程。我有一个 python 脚本作为first.py

#!/usr/bin/python3 print "Content-type: text/html\n" print "Hello, world!"

我的电脑上有多个版本的 python。我无法找出启用 cgi 的目录,因此我将此代码粘贴到三个位置

  1. /usr/lib/cgi-bin/first.py

  2. /usr/lib/cups/cgi-bin/first.py

  3. /var/www/html/first.py

现在,当我在终端中运行此代码时,它工作正常,但是当我输入时

curl http://localhost/first.py

它只输出简单的文本并且不执行。

我已将所有权限授予first.py

我已通过命令启用并启动服务器

a2enmod cgi systemctl restart apache2

请告诉我如何执行以及这里发生了什么?提前致谢。

python ubuntu cgi apache2 server-side-scripting

6
推荐指数
2
解决办法
2万
查看次数