タグ付けされた質問 「php」

PHPは、主にサーバー側のWeb開発用に設計された、広く使用されている、高レベルで動的なオブジェクト指向の解釈されたスクリプト言語です。PHP言語に関する質問に使用されます。

6
コンピューターをスリープ状態にしたユーザーをWebサイトからログアウトさせる
これは奇妙なものです。私たちはLaravelのWebサイトを持っており、このサイトにはユーザーごとにタイマーがあり、起動する前に15分間非アクティブになります。 これは、reactコンポーネントのページにあるタイマーを介して行いますが、期待どおりに機能しますが、今では新しい問題があります。ユーザーがログインしてラップトップのふたを閉じると、Webサイトはそれらを起動するはずです。銀行がこれを行い、学校や大学がこれを行い、政府機関もこれを行います。したがって、それは可能です。 laravel-websocketsライブラリとEcho を使用して、Webソケットを使用します。私が見たいのは: ラップトップを閉じると、ログイン画面が表示されます。したがって、次にラップトップを開いてログインすると、ログイン画面にブラウザが表示されます。それはそれほど迅速に発生する必要はありませんが、基本的にページを更新するように指示する何かをフロントエンドに送信する方法が必要です。セッションが強制終了されると、15分のlaravelでセッションライフタイムを設定します。 一部の人々は他の同様の質問で提案しました: カスタムWebソケットハンドラーを作成するには (ブラウザの)セッションCookieをバックエンドのユーザーCookieと比較します。 フロントエンドでタイマーを実行するには(ラップトップの蓋を閉じるとタイマーが停止します) 最も人気のあるものは、Webソケットを使用していて、ユーザーが切断してから起動するのをリッスンしていますが、これで問題ありませんが、一時停止しているブラウザーにリクエストを送信してから起動するにはどうすればよいでしょうか。 requestIdleCallback()を見つけましたが、サイトにすでにハートビートタイマーがある場合は、これが必要だとは思いません。また、すべてのブラウザで機能するわけではありません。 私はこれを達成する方法についてここで非常に迷っています、私が与えることができる例は次のとおりです: 銀行にログインし、コンピューターをスリープ状態にして、15〜20分待ってからコンピューターを起動し、ログインして、銀行にログイン画面が表示されることを確認します。それが私が欲しいものです。しかし、私はそれを達成する方法を知りません。 バックエンドから「スリープ中」のブラウザにイベントを送信することはできません。はい、これはバックエンドのソリューションでなければなりませんが、フロントエンドを更新して、ラップトップを再起動したときにログアウト画面に表示されるようにする方法を教えてください。またはコンピュータ?

3
TCPDFフルページテーブル
写真に示すように、テーブルをページ(A4)に合うようにさまざまな方法で試しました。多くの 検索を行いましたが、Webで役立つものを見つけることができませんでした。私は動的テーブルを使用していますが、テーブルの幅以外はすべて問題ありません。これが私のコードです: $content = '<table><thead><tr><th class="bg-dark text-white" align="center">#</th><th align="center" class="bg-dark text-white">Code</th><th align="left" class="bg-dark text-white">Description</th><th align="center" class="bg-dark text-white">Item Type</th></tr></thead><tbody><tr style="background-color: #f2f2f2;"><td align="center">1</td><td align="center">1001</td><td align="left">Pofak</td><td align="center">Fixed Price</td></tr><tr ><td align="center">2</td><td align="center">1002</td><td align="left">Ice</td><td align="center">Weight</td></tr><tr style="background-color: #f2f2f2;"><td align="center">3</td><td align="center">1003</td><td align="left">Minoo</td><td align="center">Fixed Price</td></tr><tr ><td align="center">4</td><td align="center">1004</td><td align="left">Bastani</td><td align="center">Fixed Price</td></tr><tr style="background-color: #f2f2f2;"><td align="center">5</td><td align="center">1005</td><td align="left">Chocolate</td><td align="center">Weight</td></tr><tr ><td …
11 php  html  css  tcpdf 

2
PHP:「return」、「yield」、「yield from」の違いと、同じ関数でyieldとreturnの両方を混合することの違いは何ですか?
違いreturnとyield、私はそこに考え出しまでクリアな見えたでもあったyield fromとの両方を組み合わせることが可能returnとyield全く同じ機能で! 私の理解returnは、その後のすべてが実行されなかったということでしたね? しかしながら: function generate(): iterable { return [1, 2, 3]; } foreach (generate() as $value) { echo $value; } プロデュース: "123" しかし、以下: function generate(): iterable { return [1, 2, 3]; yield; } foreach (generate() as $value) { echo $value; } 何も生産しない!つまり、利回りが実行されるということですか? これはバグですか?
10 php  return  generator  yield 

2
nginxの場所でプレフィックスURLを書き換えます
このような私のnginx設定ファイル: server { listen 80; listen 443 ssl; server_name XXX.com; error_log /log/nginx/xxx.com_error.log; access_log /log/nginx/xxx.com_access.log main; root /data/www/; index index.php index.html index.htm; location ~ \.php$ { add_header X-Frame-Options SAMEORIGIN; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 以下を満たすためにnginxを設定する必要があります: URLが1の場合は、しない接頭辞を持っている「/api/mobile/index.php",and要求のポートは80で、HTTPS 2にリダイレクトURLが場合は、持っている接頭辞を」上に行く/api/mobile/index.php",just だから私は設定ファイルにコンテンツを追加します: location ~ ^(?!/api/mobile/index\.php).*$ { if ($server_port = "80") { …
10 php  nginx 

4
PHPを使用してこのパターンを印刷する方法は?
このパターンを印刷するには? $number = 5; for ($i=1; $i <= $number ; $i++) { for ($j=$i; $j >= 1;$j--){ echo "0"; } echo "\n"; } プリント 0 00 000 0000 00000 私はこのようにしてみましたが、星とゼロ文字を印刷するのに混乱しています for ($i=1; $i <= $number ; $i++) { $sum = 0; for ($j=$i; $j >= 1;$j--){ $sum +=$j; } echo …
10 php 

4
Woocommerce:[カートに追加]ボタンがクリックされた場所を検出し、別のコードを実行します
eコマースストア: ホームページに表示されているアイテムがあり、各アイテムの下に[カートに追加]ボタンがあります。このボタンをクリックすると、アイテムがカートに追加されます。このボタンをもう一度クリックすると、カートに既に存在する商品の数量が1増えます。これはループだと思います。ここまでは順調ですね。 単一の製品ページに、「カートに追加」ボタンがあります。このボタンをクリックすると、アイテムがカートに追加されます。数量を変更するために使用できる数量入力テキストボックスもあります。これも結構です。 問題: ループ内でクリックされた[カートに追加]ボタン(現在はホ​​ームページですが、アーカイブページなどの他のページでも使用できます)とクリックされた[カートに追加]ボタンを区別する必要があります単一の製品ページ。この差別化に基づいて、ここに私がする必要があるものがあります: ループ内に表示される[カートに追加]ボタンがクリックされた場合は、を使用してカートに既に存在するこのアイテムの数量を 取得し、$cart_item_key1増やして、追加の処理を実行して詳細を保存するカスタム関数に送信します再びカートに入れます。 [単一の商品]ページに表示される[カートに追加]ボタンをクリックした場合は、を使用してカートに既に存在するこのアイテムの数量を 取得し、$cart_item_key3を掛けて、追加の処理を実行して保存するカスタム関数に送信します再度カートに入れる詳細。 上記のどちらの場合も、さまざまなロジックに基づいて数量が変更され、この数量をカスタム関数呼び出しに送信する必要があります。 私が試したもの: 私は次のコードを試しました: add_action('woocommerce_add_to_cart', 'custom_action_add_to_cart', 20, 6); function custom_action_add_to_cart($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data) { $cart = WC()->cart->get_cart(); $product = wc_get_product($product_id); // NEED TO RUN CUSTOM CODE HERE BASED ON THE CHECKS if (add to cart within loop is clicked) { …

2
プロパティタイプのヒントを導入すると、「初期化前に型付きプロパティにアクセスしてはならない」というエラーが突然表示されるのはなぜですか?
次のように、新しく導入されたプロパティタイプのヒントを利用するようにクラス定義を更新しました。 class Foo { private int $id; private ?string $val; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; } public function getId(): int { return $this->id; } public function getVal(): ?string { return $this->val; } public function getCreatedAt(): ?DateTimeInterface { return $this->createdAt; } public …

1
copydbが廃止された今、PHPを使用してMongoDBデータベースをコピーする方法
MongoDBバージョン4.2 copydbとそのcopyDatabaseラッパーは非推奨になりました。MongoDBのマニュアルは、私たちが今、使用すべきことを示唆しているmongodumpとmongorestore。しかし、PHP MongoDBドライバーを使用してPHPからcopyコマンドを呼び出していました。ダンプおよび復元コマンドは、コマンドラインから実行する必要があるコマンドであり、同等のPHPがありません。PHPを使用してデータベースをコピーするにはどうすればよいですか?
10 php  mongodb 

7
file_get_contentsが間違った結果を得る
更新 問題を解決して回答を投稿しました。ただし、私のソリューションは100%理想的ではありません。私はむしろのみ除去するであろうsymlinkからcacheとclearstatcache(true, $target)か、clearstatcache(true, $link)それは動作しません。 また、シンボリックリンクのキャッシュを最初から防ぐか、シンボリックリンクを生成した直後にキャッシュから削除します。残念ながら、私はそれで運がありませんでした。何らかの理由でclearstatcache(true)シンボリックリンクを作成しても機能しない場合でも、キャッシュされます。 私は私の答えを改善し、それらの問題を解決できるすべての人に賞金を喜んで授与します。 編集する clearstatcache実行するたびにファイルを生成してコードを最適化しようとしたので、シンボリックリンクごとに1回だけキャッシュをクリアする必要があります。何らかの理由で、これは機能しません。clearstatcacheがsymlinkパスに含まれるたびに呼び出す必要がありますが、なぜですか?私のソリューションを最適化する方法がなければなりません。 で使用PHP 7.3.5していnginx/1.16.0ます。file_get_contentsを使用すると、誤った値が返されることがありますsymlink。問題は、シンボリックリンクを削除して再作成した後、その古い値がキャッシュに残っていることです。正しい値が返されることもあれば、古い値が返されることもあります。ランダムに見えます。 私はキャッシュをクリアするか、キャッシュを防止しようとしました: function symlink1($target, $link) { realpath_cache_size(0); symlink($target, $link); //clearstatcache(true); } キャッシュを無効にしたくないのですが、file_get_contentsで100%の精度が必要です。 編集する 私のソースコードは長すぎて複雑であるため、投稿できません。問題を再現する最小限の再現可能な例(index.php)を作成しました。 <h1>Symlink Problem</h1> <?php $dir = getcwd(); if (isset($_POST['clear-all'])) { $nos = array_values(array_diff(scandir($dir.'/nos'), array('..', '.'))); foreach ($nos as $no) { unlink($dir.'/nos/'.$no.'/id.txt'); rmdir($dir.'/nos/'.$no); } foreach (array_values(array_diff(scandir($dir.'/ids'), array('..', '.'))) as …


3
ArrayObjectは、PHP 7.4のend()では機能しません
PHP 7.4への移行時にreset()、のような、current()またはend()ArrayObjectに関するいくつかの配列関数の異なる動作に対処する必要があります。次の例では、さまざまな出力が生成されます。 <?php $array = new \ArrayObject(["a", "b"]); $item = end($array); var_dump($item); $array = ["a", "b"]; $item = end($array); var_dump($item); PHP 7.4の出力は次のようになります。 bool(false) string(1) "b" PHPバージョン7.4より前の場合、出力は次のようになります。 string(1) "b" string(1) "b" A end($array->getArrayCopy())は通知を生成しますが、変数と一緒に使用すると回避策になる可能性があります。 行動をエミュレートする方法があるend()とArrayObjectかはArrayIterator?ArrayObjectは非常に大きくなる可能性があり、最後まで反復することが最善の解決策ではない場合があります。
9 php  php-7.4 

8
最も人口の多い年を見つける(最も効率的なソリューション)
2つの配列があるとします。$births誰かが生まれた時期を示す誕生年$deathsのリストと、誰かが死亡した時期を示す死年のリストが含まれている場合、人口が最も多かった年をどのように見つけることができますか? たとえば、次の配列があるとします。 $births = [1984, 1981, 1984, 1991, 1996]; $deaths = [1991, 1984]; 人口が最も多かった年はであるはずです1996。なぜなら3、その年の間に人々は生きていたからです。それは、それらの年の中で最も高い人口数でした。 これについて、実行中の数学は次のとおりです。 | 誕生| 死| 人口| | ------- | ------- | ------------ | | 1981 | | 1 | | 1984年 | 2 | | 1984年 1984年 2 | | 1991 | 1991 | 2 | | …

5
バックグラウンドプロセスでConnectionExceptionではなくRejectionExceptionをスローするGuzzle
複数のキューワーカーで実行されるジョブがあり、Guzzleを使用したHTTPリクエストがいくつか含まれています。ただし、GuzzleHttp\Exception\RequestExceptionこれらのジョブをバックグラウンドプロセスで実行しているときに、このジョブ内のtry-catchブロックが取得されないようです。実行中のプロセスは、php artisan queue:workキューを監視してジョブを取得するLaravelキューシステムワーカーです。 代わりに、スローされる例外GuzzleHttp\Promise\RejectionExceptionはメッセージの1つです。 プロミスは次の理由で拒否されました:cURLエラー28:受信した0バイトで30001ミリ秒後に操作がタイムアウトしました(https://curl.haxx.se/libcurl/c/libcurl-errors.htmlを参照 ) これは実際には偽装されていますGuzzleHttp\Exception\ConnectException(https://github.com/guzzle/promises/blob/master/src/RejectionException.php#L22を参照)。これは、通常のPHPプロセスで同様のジョブを実行すると、 URL、私はConnectExceptionメッセージで意図したとおりに取得します: cURLエラー28:100ミリ秒後に操作がタイムアウトし、0バイトのうち0バイトが受信されました(https://curl.haxx.se/libcurl/c/libcurl-errors.htmlを参照 ) このタイムアウトをトリガーするサンプルコード: try { $c = new \GuzzleHttp\Client([ 'timeout' => 0.1 ]); $response = (string) $c->get('https://example.com')->getBody(); } catch(GuzzleHttp\Exception\RequestException $e) { // This occasionally gets catched when a ConnectException (child) is thrown, // but it doesnt happen with RejectionException because it is …

3
更新時に(AJAX)URLフィルターパラメーターを使用してAJAXページネーションを機能させる
明確に定義されたAJAXフィルターが2つあります。1つは[もっと読み込む]ボタン用、もう1つはドロップダウンフィルターの選択用です。どちらもAJAXのフロントエンドでプロパティのリストを再読み込みし、一斉に連携します(たとえば、ドロップダウンで最小価格、最大価格、ベッド数を選択すると、リストが更新され、[もっと読み込む]ボタンが正常に機能します) 。 同じフィルタがURLパラメータでも機能します。たとえば、URLが次の場合は、 mydomain.com/?min_price=100000&max_price=5000000&beds=3&page=3 これらのパラメーターでフィルターします。3ページ分のプロパティも表示されます。これは、初期ロードを含め、うまく機能します。ただし、URLが直接読み込まれる場合は、ページネーションでは機能しません。上記のURLをブラウザーに直接入力してロードすると、最初の結果は正しいですが、[さらに読み込む]ボタンをクリックすると、page = 3がpage = 4に変わります(正しい)が、フィルターされていない完了したプロパティの2ページ目が追加されます、そしてそうし続けます-フィルタリングされたページネーションを続けるのではなく。 何が悪いのですか? これが私のコードです(申し訳ありませんがたくさんあります!) JS: jQuery(function($){ // AJAX Stuff for filters + load more button /* * Load More */ $('#prop_loadmore').click(function(){ $.ajax({ url : prop_loadmore_params.ajaxurl, data : { 'action': 'loadmorebutton', 'query': prop_loadmore_params.posts, // loop parameters passed by wp_localize_script() 'page' : prop_loadmore_params.current_page, // Get …
9 php  jquery  ajax  wordpress 

1
PhpStorm:クラス名での呼び出しは廃止予定
PhpStormでテストを実行しようとすると、次のようになります。 PHPUnit 8.5.2は、Sebastian Bergmannおよび寄稿者によるものです。 警告:クラス名での呼び出しは非推奨です これは、おそらくPhpStormがPHPUnitオートローダースクリプトを処理する方法に関する問題であり、testと同じファイル名であると想定しています。 何か変わったことは?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.