我编写了一个使用身份验证和会话的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,一旦我将其发送回服务器,为什么我需要做它来处理它?</ p>
基本上,import.php会检查并读取同一目录中的文件。假设cron运行时有文件并解析它们并将数据插入数据库。同样,一切都在浏览器中工作,而不是从命令行导入。
之前从未这样做过(或者那个问题很多PHP),我完全被难过了。
感谢您的帮助。
答案 0 :(得分:0)
我已经解决了这个问题的我的问题。
shell_exec('nohup php '.realpath(dirname(__FILE__)).'/yourscript.php > /dev/null &');
您可以将其设置为每隔x分钟运行一次,并且它将在后台运行,无需用户延迟。
我们可以从这里开始吗?
答案 1 :(得分:0)
这不太可能帮助任何人,但是这个项目的要求发生了变化,所以我最终创建了一个基于PHP的REST API,并用Python重写了这个导入脚本,以便与正在开发的其他工具集成。一切都按需要运作。在Python ...
import cookielib
import getopt
import os
import sys
import urllib
import urllib2
import MultipartPostHandler
不应该提供任何更多细节 - 任何精通Python的人都应该得到漂移。脚本读取文件并将其提交给我的PHP API。