如何使用shell脚本正确调用PHP文件?

时间:2016-09-15 03:13:22

标签: php bash shell shellexecute

如何使用shell脚本从另一台服务器调用PHP?我有一个PHP文件和一个shell脚本,这两个文件存储在不同的服务器上。

我有这个Shell脚本:

#!/bin/bash

php "http://example.com/csv_import.php"

但是当我手动运行此命令时,出现错误:Could not open input

PHP:

if (($handle = fopen($directory_root."filename.csv", "r")) !== FALSE){
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE){
        $sql = "INSERT INTO tablename(col1,col2,col3,col4,col5)
                VALUES ('".mysql_escape_string($data[0])."',
                        '".mysql_escape_string($data[1])."',
                        '".mysql_escape_string($data[2])."',
                        '".mysql_escape_string($data[3])."',
                        '".mysql_escape_string($data[4])."')";
        $query = mysql_query($sql);
    }
    fclose($handle);
}

1 个答案:

答案 0 :(得分:0)

在您的呼叫服务器上,让您的cron作业执行以下脚本(也驻留在您的呼叫服务器上):

<?php

$options = array(
  CURLOPT_URL             => 'http://example.com/csv_import.php',
);

$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);

?>

因此,在客户端:
cron调用runCurl.php
runCurl.php向服务器的csv_import.php文件发出http请求

在服务器上:
csv_import.php执行,将数据写入数据库(与csv_import.php位于同一服务器上)
csv_import.php存储在/ htdocs中,以便http请求可以访问 设置csv_import.php文件权限以使其可执行