2

認証とセッションを使用する PHP Web アプリケーションを作成しました (Cookie は使用しません)。ブラウザのユーザーにとって、すべてが正常に機能します。この時点で、タスクを自動的に実行する機能を追加する必要があります... ユーザーは何も見る必要がなく、このプロセスと対話することもできません。そこで、ブラウザで動作する新しい PHP import.php を作成しました。「php import.php」を呼び出す新しい cron ジョブをセットアップしました。うまくいきません。グーグルを開始しましたが、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が実行され、それらを解析し、DBにデータを挿入するときにファイルがあるとします。繰り返しになりますが、コマンド ラインからのインポートだけでなく、すべてがブラウザーで機能します。

これまでにこれを行ったことがない (またはその点で多くの 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 で書き直して、開発中の他のツールと統合することになりました。すべてが必要に応じて機能します。パイソンでは...

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

これ以上詳細を提供する必要はありません。Python に精通している人なら誰でも理解できるはずです。スクリプトはファイルを読み取り、PHP API に送信します。

于 2013-10-21T21:57:41.817 に答える