我正在用Python编写一个cgi页面.假设客户端向我的cgi页面发送请求.我的cgi页面进行计算,一旦它有第一个输出,它就会将该输出发送回客户端,但它会继续进行计算并在发送第一个响应后发送其他响应.
我在这里介绍的可能吗?我问这个问题是因为在我有限的知识中,在cgi页面中,响应是一次性发回的,一旦发送响应,cgi-page就会停止运行.这件事是在服务器端或客户端进行的,我该如何实现呢?
我的服务器正在运行Apache.非常感谢你.
我在这个论坛中尝试过"dbr"的客户端代码(感谢他,我知道了多长时间的轮询工作).
<html>
<head>
<title>BargePoller</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<style type="text/css" media="screen">
body{ background:#000;color:#fff;font-size:.9em; }
.msg{ background:#aaa;padding:.2em; border-bottom:1px #000 solid}
.old{ background-color:#246499;}
.new{ background-color:#3B9957;}
.error{ background-color:#992E36;}
</style>
<script type="text/javascript" charset="utf-8">
function addmsg(type, msg){
/* Simple helper to add a div.
type is the name of a CSS class (old/new/error).
msg is the contents of the div */
$("#messages").append(
"<div class='msg "+ type +"'>"+ msg +"</div>"
);
}
function waitForMsg(){
/* This requests the url …Run Code Online (Sandbox Code Playgroud) 在HTML表单中,如果我们给输入框命名[],就像这样
<input name="foo[]" type="text" />
<input name="foo[]" type="text" />
Run Code Online (Sandbox Code Playgroud)
在PHP中,我们可以在数组中获取这些输入框的值$_POST['foo'].
如何在Perl中做类似的事情?我用CGI.pm
作为一个学习练习,我花了一些时间通过创建一些基本的应用程序来获取Lua.我已经在Natty/Ubuntu上安装并运行得很好,但是,我有点迷失了如何让它与nginx玩得很好.
我在这里阅读了一下http://wiki.nginx.org/HttpLuaModule#Installation 并将此repo https://github.com/chaoslawful/lua-nginx-module克隆到我的/ etc/nginx文件夹中......
然而,我仍然相当迷失,并且不确定如何在基本水平上使其工作.是否可以在我的nginx.conf文件中包含一些内容来处理/ lua请求,或者我是否需要重新编译/重新安装nginx?(我宁愿避免这种情况).
我已经通过fpm在nginx下使用php了很长一段时间,但我真的不知道从哪里开始让Lua以类似的方式工作.
我从我的主目录运行以下命令:
python -m CGIHTTPServer
Run Code Online (Sandbox Code Playgroud)
这运行服务器,但是当我尝试访问cgi-bin目录中的脚本时,我得到:
Traceback (most recent call last):
File "/usr/lib/python2.7/CGIHTTPServer.py", line 251, in run_cgi
os.execve(scriptfile, args, env)
OSError: [Errno 13] Permission denied
Run Code Online (Sandbox Code Playgroud)
以root身份运行并没有什么不同.这些文件似乎具有所有正确的权限:
student@bandersnatch:~$ ls -lhR
.:
total 12K
drwxr-xr-x 2 student student 4.0K Jun 13 18:38 cgi-bin
drwxr--r-- 2 student student 4.0K Jun 10 2004 kalpy
-rwxrwxrwx 1 student student 2.0K Jun 13 12:37 test.html
./cgi-bin:
total 8.0K
-rwxr-xr-x 1 student student 31 Jun 13 18:38 test.py
Run Code Online (Sandbox Code Playgroud)
编辑:test.py的内容是:
#!/usr/bin/python
print "test"
Run Code Online (Sandbox Code Playgroud)
shebang有效:
~$ which python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud) 我有一个HTML表单,我使用Python根据输入生成一个日志文件.我还想让用户在他们选择时上传图片.我可以弄清楚如何使用Python操作它,但我不知道如何上传图像.这肯定在以前完成,但我很难找到任何例子.你们有人能指出我正确的方向吗?
基本上,我正在使用cgi.FieldStorage并csv.writer制作日志.我想从用户的计算机上获取一个图像,然后将其保存到我服务器上的目录中.然后我将重命名它并将标题附加到CSV文件.
我知道有很多选择.我只是不知道它们是什么.如果有人能指导我走向某些资源,我将非常感激.
让我们从一些简单的东西开始:一个带有一个可以回显的字段的表单.
我正在尝试使用Apache服务器将python脚本作为cgi运行.我的脚本看起来像这样:
#!/usr/bin/python
import cgi
if __name__ == "__main__":
print("Content-type: text/html")
print("<HTML>")
print("<HEAD>")
Run Code Online (Sandbox Code Playgroud)
我在httpd.conf中完成了必要的配置(在我看来):
<Directory "/opt/lampp/htdocs/xampp/python">
Options +ExecCGI
AddHandler cgi-script .cgi .py
Order allow,deny
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
我用chmod设置了脚本的执行权限
但是,当我尝试通过localhost访问脚本时,我得到一个错误500:在标题之前输出脚本结束:script.py可能是什么问题?该脚本是在类似Unix的环境中创建的,所以我认为clrf vs lf的问题不成立.非常感谢.
我有一种情况,我需要一个python脚本在连续循环中运行,我需要从另一个脚本传递参数,该脚本将在动作发生时运行.
第二个脚本将由一个使用cgi的网站触发,我的工作正常.连续循环应该接受cgi脚本读出的参数(然后通过串口发送信息).
对于特定问题,我不能让cgi脚本直接通过串口发送数据,因为每次运行时都会重置串口.
我似乎无法找到有关此类设置的任何信息.是否有任何方法或库可供我们研究这种或更好的方法来接近它?
有没有简单的方法来比较Perl中的两个字符串数组?
@array1 = (value1, value2, value3...);
@array2 = (value1, value3, value4...);
Run Code Online (Sandbox Code Playgroud)
我需要比较如下"N"值的数值,
value1 eq value1
value2 eq value3
value3 eq value4
Run Code Online (Sandbox Code Playgroud)
请建议我有什么模块可以做到这一点?
谢谢
我正在尝试使用PhpStorm(v2017.3)运行一个简单的php文件.它应该输出一个var_dump,但在运行脚本时我的浏览器中经常遇到502错误的网关错误.我在PhpStorm中收到以下错误:
找不到php-cgi:请确保已配置的PHP解释器构建为CGI程序(指定了--enable-fastcgi)
当我php -v在我的终端中运行时,输出是:
PHP 7.1.7 (cli) (built: Jul 15 2017 18:08:09) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止尝试过的事情:
brew uninstall php71然后brew install71.--with-cgi选项添加到我的brew install php71命令