0

私は非常に長いものを計算するphpスクリプトを持っています。

jsファイルから呼び出されます。jsファイルから呼び出すだけでなく、別のphpファイルからも呼び出したいと思います。

このファイルはstrategy.server.phpと呼ばれ、そのようにビルドされます

 <?php
    include_once("../config.php");
    include_once("../class/simulator.class.php");

    $simulator = new Simulator();
    $SPOT = $_GET["strikePrice"];
    $INTEREST = $_GET["interestRate"] / 100;
    $VOLATILITY = $_GET["volatility"] / 100;
    $REMAININGDAYS = $_GET["remainingDays"] / 365;

    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    header("Content-type: application/json; charset=utf-8");

    if(!empty($_GET['mycase']))
    {
        switch($_GET['mycase'])
////calculations... 
            $data['totalMargin'];  
           echo json_encode($data);

同じファイルを使用して、さまざまなパラメーターを(ループで)計算しようとしています。
だから私はインクルードを使用して次のようなパラメータを投稿することを考えました:

$params         = "some params...";
$params     .=  "strikePrice=".$data["strikePrice"].
        "&volatility=".$data["volatility"].
        "&remainingDays=".$data["remainingDays"].
        "&interestRate=".$data["interestRate"].
        "&commission="."7".//$data["commission"].
        "&profitDays="."7";//$data["profitDays"];

include("server/strategy.server.php?" .$params);
json_decode($data);
echo $data['totalMargin'];

しかし、それはエラーを与えます:
Warning: include(server/strategy.server.php?mycase=1&rangeMin=0&rangeMax=0&strikePrice=1078&volatility=24&remainingDays=51&interestRate=2.5&commission=7&profitDays=7) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\s-maof-vb\PRO\functions_alarms.php on line 86

パラメータを含むファイルを含めると、ファイルがロードされます(ただし、パラメータは含まれません)。

4

2 に答える 2

0

PHPファイルを含めると、ファイル内のすべての操作が実行中の現在のPHPファイルに挿入されるため、スコープで定義されたパラメーターにはコード内からアクセスできます。

たとえばecho.php、次の内容で呼び出されたファイルがある場合:

<?php
echo $test."\n";

そしてそれを別のファイルに含めました:

<?php
$test= "hello";
include("echo.php");
$test = "world";
include("echo.php");

結果は次のようになります。

hello
world

したがって、インクルードされたファイルへのパラメーターは、HTTP GETメソッドを使用して渡されるのではなく、スコープで定義されたものによって渡されます。また、UNIXでファイル名の最後にパラメータを取得すると、ファイルシステムはディスク上の文字列全体を検索します。

上記の例では、ファイルは次のようにコンパイルされます。

<?php
$test= "hello";
echo $test."\n";
$test = "world";
echo $test."\n";

したがって、あなたの場合、strategy.server.phpスクリプトを編集して、最初にデータがparams配列で渡されているかどうかを確認してから、デフォルトでGETに設定することをお勧めします。

if(empty($params)){
   $params = $_GET; 
}
// filter params for user input;
于 2012-07-10T09:05:13.260 に答える
0

include関数は、HTTPのようにパラメーターを受け入れません。また、同じファイルが複数回含まれているため、実行しようとしていることはベストプラクティスではありません。$data値の配列を通過するforループまたはwhileループを作成する必要があります。

それでもこの機能が必要な場合は、cURLライブラリまたはfile_get_contents()を使用してスクリプトを呼び出すことをお勧めします(含めるのではなく)。

于 2012-07-10T09:08:21.163 に答える