2010-07-27 77 views
2

比方说,我连接到FTP通过发送一个Ajax请求PHP:如何使用FTP与Ajax?

$connection = ftp_connect($server); 
$login = ftp_login($connection, $ftp_user_name, $ftp_user_pass); 

这个请求之后,我想上传一个文件:

$upload = ftp_put($connection, $dest, $source, $mode); 

有没有办法让一个通过FTP连接到客户端的服务器并不断发送Ajax请求而不重新建立服务器端的FTP连接?

谢谢!

回答

1

嗯..想到的唯一方法是分解PHP进程,然后修改一些共享资源(文件,shmem等)以将消息传入/传出AJAX进程和长时间运行的FTP进程。

但坦率地说,您可能想在这里重新考虑您的问题/工具组合。这感觉有点像旧版本“如果你只有一把锤子,每一个问题都会变得像钉子一样”。 PHP的主要优势在于它专门处理单个请求,并在处理请求后清理它声称的所有资源。其他语言/平台更持久,可能更适合您在此尝试的内容。我在这里思考Java或.Net。

+0

在这种情况下Java或.Net会更有帮助吗?一旦ajax请求完成,我将不得不开始一个新的请求并创建一个新的FTP进程。或者我错了? 我正在考虑以某种方式将FTP连接ID传递给ajax部分,并将其保留在那里直到下一个请求。但在这种情况下,我不确定PHP是否会在我的下一个请求之前关闭FTP连接。而且我不确定如何获取FTP连接ID,因为它是一个PHP“资源”。 虽然这不是一个关键问题,因为我每次发出ajax请求时都可以打开和关闭FTP连接。 – Vasily 2010-07-27 16:46:08

+0

也许我的回答应该以“不,除非......”开头 您提出的问题源于这样一个事实:PHP是一种非常要求以语言为中心的语言,所以没有 - 无法将连接从“向另一个请求(至少:据我所知)。如果FTP连接是在请求A中创建的,那么它将与请求A一起死亡。 其他语言/平台允许您创建与请求没有直接关联的资源,这就是为什么他们会帮助解决这个问题。 知道了 - 我能想到的唯一解决方案是创建一个单独的进程,而不是绑定到您当前的请求:forked – kander 2010-07-27 17:03:56

+0

“如果FTP连接在请求A中创建,那么它将与请求A一起死掉。” - 非常好的和清楚的一点。谢谢! – Vasily 2010-07-27 17:25:35