Как вызвать PHP с другого сервера, используя скрипт оболочки? У меня есть файл PHP и сценарий оболочки, 2 файла хранятся на другом сервере.
У меня есть этот скрипт:
#!/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);
}
На вашем вызывающем сервере пусть ваша задача 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 выдает запрос http в файл csv_import.php сервера
На сервере:
csv_import.php выполняется, записывая данные в вашу базу данных (которая находится на том же сервере, что и csv_import.php)
csv_import.php хранится в / htdocs, так что он доступен по запросу http
Права доступа к файлу csv_import.php устанавливаются так, чтобы он был исполняемым
Других решений пока нет …