2

我编写了一个使用身份验证和会话的 PHP Web 应用程序(虽然没有 cookie)。对于浏览器中的用户来说,一切正常。在这一点上,虽然我需要添加将自动执行任务的功能......用户不需要看到任何东西,也不能与这个过程进行交互。所以我编写了我的新 PHP,import.php,它可以在我的浏览器中运行。我设置了一个新的 cron 作业来调用“php import.php”。不工作。开始谷歌搜索,似乎我需要使用 cURL 和可能的 cookie,但我不确定。基本上 import.php 需要进行身份验证,然后访问本地服务器上同一目录中的单独文件 funcs.php 中的函数。所以我将 cURL 添加到 import.php 并从命令行重新运行;我看到以下内容:

[me@myserver]/var/www/html/webapp% php ./import.php
* About to connect() to myserver.internal.corp port 443 (#0)
*   Trying 192.168.111.114... * connected
* Connected to myserver.internal.corp (192.168.111.114) port 443 (#0)
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* Remote Certificate has expired.
* SSL certificate verify ok.
* SSL connection using SSL_RSA_WITH_3DES_EDE_CBC_SHA
* Server certificate:
*   subject: CN=dept,O=Corp,L=Some City,ST=AK,C=US
*   start date: Jan 11 16:48:38 2012 GMT
*   expire date: Feb 10 16:48:38 2012 GMT
*   common name: myserver
*   issuer: CN=dept,O=Corp,L=Some City,ST=AK,C=US
> POST /webapp/import.php HTTP/1.1
Host: myserver.internal.corp
Accept: */*
Content-Length: 356
Expect: 100-continue
Content-Type: multipart/form-data; boundary=----------------------------2c5ad35fd319

< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Date: Thu, 27 Dec 2012 22:09:00 GMT
< Server: Apache/2.4.2 (Unix) OpenSSL/0.9.8g PHP/5.4.3
< X-Powered-By: PHP/5.4.3
* Added cookie webapp="tzht62223b95pww7bfyf2gl4h1" for domain myserver.internal.corp, path /, expire 0
< Set-Cookie: webapp=tzht62223b95pww7bfyf2gl4h1; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Content-Length: 344
< Content-Type: text/html
< 
* Connection #0 to host myserver.internal.corp left intact
* Closing connection #0

我不确定通过 cURL 进行身份验证后应该做什么。或者是否有另一种我不使用 cURL 的身份验证方式?目前,Web 应用程序中的所有页面都根据 $_SESSION 和 $_POST 值检查采取(或不采取)行动。如果 cURL 是唯一的方法,我需要 cookie 吗?如果我需要 cookie,一旦我将它发送回服务器,我为什么需要处理它?

基本上 import.php 会检查并读取同一目录中的文件。假设 cron 运行时有文件并解析它们并将数据插入数据库。同样,一切都在浏览器中运行,而不是从命令行导入。

以前从未这样做过(或者很多 PHP),我完全被难住了。

谢谢你的帮助。

4

2 回答 2

0

我已经用这个解决了我的问题。

    shell_exec('nohup php '.realpath(dirname(__FILE__)).'/yourscript.php > /dev/null &');

您可以将其设置为每 x 分钟运行一次,它将在后台运行而不会出现用户延迟。

我们可以从这里开始吗?

于 2012-12-28T16:36:31.073 回答
0

这不太可能帮助任何人,但是这个项目的需求发生了变化,所以我最终创建了一个基于 PHP 的 REST API 并用 Python 重写了这个导入脚本,以与正在开发的其他一些工具集成。所有工作都根据需要。在 Python...

import cookielib
import getopt
import os
import sys
import urllib
import urllib2
import MultipartPostHandler

不需要提供更多细节 - 任何精通 Python 的人都应该明白这一点。脚本读取文件并将其提交给我的 PHP API。

于 2013-10-21T21:57:41.817 回答