2017-05-05 11 views
-1

MacOSX端末のコマンドラインで実行したいと思っていた非常に簡単な小さなPHPスクリプトを作成しました。phpファイルがコマンドラインで実行されていませんが、localhost上で動作するときに動作します

echo "test"と入力しても問題はありません。

今度は、APIからデータを取得してprint_r $resultと入力するように、そのスクリプトにカールリクエストを追加しました。

結果は決してコマンドラインに出力されません。私は今私のMAMPのローカルホストで全く同じPHPファイルを実行すると、すべて正常に動作し、コンテンツが正しく出力されます。

これは私のコードです:

require 'connection.php'; 

$store = new connection('danny', 'https://store-bgf5e.mybigcommerce.com/api/v2/', 'XXXXX'); 
$customers = $store->get('/customers'); 

foreach($customers AS $customer) { 
    print "------ Getting Adresses for: " . $customer['first_name'] . ' '   . $customer['last_name'] . ' -------'; 
    if(isset($customer['addresses']['resource'])) { 
     print_r($store->get($customer['addresses']['resource'])); 
    } 
} 

exit; 

私はAPIがそう呼び出しは間違いなく作品だけで罰金のアドレスを返すことを知っています。

* Trying 63.141.159.120... 
* TCP_NODELAY set 
* Connected to store-bgf5e.mybigcommerce.com (63.141.159.120) port 443 (#0) 
* ALPN, offering http/1.1 
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH 
* successfully set certificate verify locations: 
* CAfile: /Applications/MAMP/Library/OpenSSL/cert.pem CApath: none 
* SSL connection using TLSv1.2/ECDHE-RSA-AES128-GCM-SHA256 
* ALPN, server accepted to use http/1.1 
* Server certificate: 
* subject: C=AU; ST=New South Wales; L=Ultimo; O=Bigcommerce Pty Ltd; CN=*.mybigcommerce.com 
* start date: Jun 4 00:00:00 2015 GMT 
* expire date: Sep 1 12:00:00 2018 GMT 
* subjectAltName: host "store-bgf5e.mybigcommerce.com" matched cert's "*.mybigcommerce.com" 
* issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert SHA2 High Assurance Server CA 
* SSL certificate verify ok. 
> GET /api/v2/customers HTTP/1.1 
Host: store-bgf5e.mybigcommerce.com 
Authorization: Basic  ZGFubnk6M2QyNjE5NTdjZGNjMTNlYmU1MTJiNDRiMjE1NGJiZGZmMGRjNTUxMw== 
Accept: application/json 
Content-Type: application/json 

< HTTP/1.1 200 OK 
< Server: openresty 
< Date: Fri, 05 May 2017 19:26:27 GMT 
< Content-Type: application/json 
< Transfer-Encoding: chunked 
< Connection: keep-alive 
< Set-Cookie: fornax_anonymousId=0ff167a5-e158-4ff8-8962-67b19bd4271b; expires=Mon, 03-May-2027 19:26:27 GMT; path=/; domain=.store-bgf5e.mybigcommerce.com 
< Last-Modified: Thu, 13 Apr 2017 22:34:54 +0000 
< X-BC-ApiLimit-Remaining: 2147483622 
< X-BC-Store-Version: 7.6.0 
< 
* Curl_http_done: called premature == 0 
* Connection #0 to host store-bgf5e.mybigcommerce.com left intact 

私にはカールがすべてを正しく実行しているように見える:

これは、カールが言っていることです。成功したカールリクエストが、他のPHPコードの実行を妨げるのとほぼ同じです。私は、 "print_r"のためにアドレスがコマンドラインに出力されることを期待しています。

ありがとうございました。

+0

の意味を理解しようとしていた皆に感謝します。 – Barmar

+0

コードが好きです。 –

+0

質問を更新しました、ごめんなさい! – user3307277

答えて

0

これを実証しました。これは、スリープ状態にするためのスクリプトをトリガし

if ($retVal['X-Bc-Apilimit-Remaining'] <= 100) { 
    sleep(300); 
} 

:ライン54上の文の場合がありconnectionクラスのhttp_parse_headers方法でhttps://github.com/adambilsing/PHP-cURL-lib-for-Bigcommerce-API/blob/master/connection.php

:私はBigCommerceのAPIに接続するには、このフレームワークを使用していましたたとえ$retVal['X-Bc-Apilimit-Remaining']nullであっても。これにそれを変更する

は、問題を修正しました:あなたはそれに見てたら

if (isset($retVal['X-Bc-Apilimit-Remaining']) && $retVal['X-Bc-Apilimit-Remaining'] <= 100) { 
    sleep(300); 
} 

それはかなり明白です。私は、PHPでスリープコマンドがあることに気づいていませんでした。

あなたはスクリプトをポストする必要があり、この:)

0

var_dumpあなたの結果と何が起こったのか試してみてください。あなたのカールレスポンスのために、私はコンテンツ長ヘッダを見ませんでした、私はカールが空の文字列を返すと思います。

あなたのPHPコードを投稿できますか?

関連する問題