Displaying the value of a stock portfolioDisplaying postsDisplaying subcategories of subcategoriesTwo while for the same queryFunction to rebalance portfolioPHP rating function for getting the average value of columnGetting the last post of all threadsCalculate stock portfolio profit based on CSV dataDisplaying comments and replies retrieved from a databaseSimple cryptocurrency portfolio rebalancerDisplaying topics in a PHP forum

I found an audio circuit and I built it just fine, but I find it a bit too quiet. How do I amplify the output so that it is a bit louder?

Is there a way to have vectors outlined in a Vector Plot?

Is it allowed to activate the ability of multiple planeswalkers in a single turn?

Shouldn’t conservatives embrace universal basic income?

Why do Radio Buttons not fill the entire outer circle?

Which was the first story featuring espers?

What's the name of the logical fallacy where a debater extends a statement far beyond the original statement to make it true?

Can a stoichiometric mixture of oxygen and methane exist as a liquid at standard pressure and some (low) temperature?

What to do when eye contact makes your coworker uncomfortable?

Why do ¬, ∀ and ∃ have the same precedence?

How could a planet have erratic days?

Which Article Helped Get Rid of Technobabble in RPGs?

Why is the Sun approximated as a black body at ~ 5800 K?

The Digit Triangles

Multiplicative persistence

Does Doodling or Improvising on the Piano Have Any Benefits?

What does "Scientists rise up against statistical significance" mean? (Comment in Nature)

"It doesn't matter" or "it won't matter"?

Why does AES have exactly 10 rounds for a 128-bit key, 12 for 192 bits and 14 for a 256-bit key size?

Why should universal income be universal?

Has any country ever had 2 former presidents in jail simultaneously?

Does the reader need to like the PoV character?

Taxes on Dividends in a Roth IRA

Stack Interview Code methods made from class Node and Smart Pointers



Displaying the value of a stock portfolio


Displaying postsDisplaying subcategories of subcategoriesTwo while for the same queryFunction to rebalance portfolioPHP rating function for getting the average value of columnGetting the last post of all threadsCalculate stock portfolio profit based on CSV dataDisplaying comments and replies retrieved from a databaseSimple cryptocurrency portfolio rebalancerDisplaying topics in a PHP forum













0












$begingroup$


Some people have mentioned to me that my site is quite inefficient and given that it's taking ~17secs to load now, I'd like to change that but I've no idea how. I've tried Gzip to compress it but it didn't help. I got rid of some double quotes (I.e. "") and have used single quotes (I.e. '') instead, as well as got rid of some HTML blank spaces but that's about it.



Here is most of my code, excluding some JS to save space. Either way, when I open the Google Chrome developer console on my site, it shows that it's the PHP file itself that takes so long to load, not JS so that's why I'm just showing that below. It's just this one page that's loading slowly, all others sites are very quick. I'd love some tips on how to make this more efficient.



<?php
require('includes/connection.php');
require('includes/config.php');
// Page name
$title = 'Portfolio';
// Include the header template
require('layout/header.php');

// If for some reason, not logged in then redirect to login page
if(!$user->is_logged_in()) header('Location: login.php'); exit();
?>
<div>
<h2><?php echo htmlspecialchars($_SESSION['username'], ENT_QUOTES); ?></h2>
<button id="opener" class='btn btn-success' >Advanced Company Data</button>
<div id="dialog" title="Advanced Company Data"><a href="http://www.nasdaq.com/symbol/aapl">Exchange Information</a>
</div>
</div>
<script>
$("#dialog").dialog(
autoOpen: false
);
$("#opener").click(function()
$("#dialog").dialog("open", "modal", true );
);
</script>
</div>
<?php
$spy = file_get_contents('https://api.iextrading.com/1.0/stock/spy/stats/year1ChangePercent');
$spy = json_decode($spy,TRUE);
// Initialising variables to store extracted information
$name = [];
$symbol = [];
$open = [];
$close = [];
$high = [];
$low = [];
$lastprice = [];
$y = 0;
$z = '';
$key = '93dcc722279c3a7577f248b09ef6167f';

// Retreiving information from database
$memberid = $_SESSION['memberID'];
$sql = "SELECT * FROM portfolio WHERE memberID = $memberid";
$result = mysqli_query($conn, $sql);

// Check if databse is empty
if (mysqli_num_rows($result) > 0)

while($row = mysqli_fetch_assoc($result))

$sym[$y] = $row['stocks_symbol'];
$pri[$y] = $row['price'];
$vol[$y] = $row['quantity'];
$id[$y] = $row['memberid'];
$y += 1;


// If database empty
else

echo 'Portfolio Empty';
die();

mysqli_close($conn);

// Adding all stock names in one variable to enable API call
for($a=0;$a<$y;$a++)

$z = $z.$sym[$a].',';

$z = rtrim($z,',');

// API call
$contents = file_get_contents("http://marketdata.websol.barchart.com/getQuote.json?key=$key&symbols=$z&mode=R");
$contents = json_decode($contents, true);
// Check successfull API call
if($contents['status']['code'] == 200)

foreach($contents['results'] as $result)

array_push($name,$result['name']);
array_push($symbol,$result['symbol']);
array_push($open,$result['open']);
array_push($close,$result['close']);
array_push($high,$result['high']);
array_push($low,$result['low']);
array_push($lastprice,$result['lastPrice']);


// If API call unsuccessful
else

echo 'Error retreiving data. Please try again later.';
die();

?>
<!-- Generating Output in tabular format -->
<table id= test class='table table-responsive'>
<tr class='head warning'>
<th>Name</th>
<th>Symbol</th>
<th>Open</th>
<th>Close</th>
<th>High</th>
<th>Low</th>
<th>Last Price</th>
<th>Price Bought</th>
<th>Quantity</th>
<th>Change Per Stock</th>
<th>Profit/Loss</th>
<th>Amount Invested</th>
<th>Current Market Value</th>
<th>Dividend</th>
<th>Total Dividend</th>
<th>Company Description</th>
<th>Latest News</th>
</tr>
<?php
$profitOrLossSum = 0;
$dividendRateSum = 0;
$startEqSum = 0;
$sumOf = array();
$pnl = array();

for($x=0;$x<$y;$x++)
?>
<tr>
<td class="input"><?php echo $name[$x]; ?></td>
<td class="input"><?php echo $symbol[$x]; ?></td>
<td class="input"><?php echo $open[$x]; ?></td>
<td class="input"><?php echo $close[$x]; ?></td>
<td class="input"><?php echo $high[$x]; ?></td>
<td class="input"><?php echo $low[$x]; ?></td>
<td class="input"><?php echo $lastprice[$x]; ?></td>
<td class="input"><?php echo $pri[$x]; ?></td>
<td class="input"><?php echo $vol[$x]; ?></td>
<td class="input"><?php
if($pri[$x] > $lastprice[$x])

echo $lastprice[$x]-$pri[$x];

else if($pri[$x] < $lastprice[$x])

echo $lastprice[$x]-$pri[$x];

else
echo '0';
?></td>
<td class="input"><b><?php
$profitOrLoss = ($lastprice[$x]-$pri[$x]) * $vol[$x];
$profitOrLossSum += $profitOrLoss;
$pnl[] = $profitOrLoss;
echo $profitOrLoss;
?></b></td>
<td><?php
$starteq = $pri[$x] * $vol[$x];
$startEqSum += $starteq;
echo $starteq;
?></td>
<td><b><?php
$firstno1 = floatval($vol[$x]);
$secondno1 = floatval($lastprice[$x]);
$sumOf[] = $firstno1 * $secondno1;
$sum1 = $firstno1 * $secondno1;
echo ($sum1);
?>
</b></td>
<td><?php
$div = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=stats&filter=dividendRate");
$div = json_decode($div,TRUE);
$sum = 0;
foreach($div as $divi => $value)
echo $value['stats']['dividendRate'];
$sum += (floatval($vol[$x]) + floatval($value['stats']['dividendRate']));

?></td>
<td><?php
$firstno = floatval($vol[$x]);
$secondno = floatval($value['stats']['dividendRate']);
$sum2 = 0;
$sum2 += $firstno * $secondno;
echo ($sum2);
$dividendRateSum += $sum2;
?></td>
<td class="input"><?php
$desc = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=company&filter=description");
$desc = json_decode($desc,TRUE);
foreach($desc as $desc => $des)
echo $des['company']['description'];

?></td>
<td><?php
$desc1 = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=news&filter=headline,url&range=1m&last=1");
$desc1 = json_decode($desc1,TRUE);
foreach($desc1 as $key111 => $des1)
echo implode(PHP_EOL, array_column($des1['news'],'headline'));
?><br><?php $link = implode(PHP_EOL, array_column($des1['news'],'url'));
echo '<a href="'.$link.'">Link</a>';

?></td>
</tr>
<?php

$arr = array('profitOrLossSum' => $profitOrLossSum, 'dividendRateSum' => $dividendRateSum);
$arr1 = array('startEqSum' => $startEqSum);
$array = array_combine($name, $sumOf);
$array10 = array_combine($name, $pnl);
?>
</table>

<h3> SPY %YTD= <?php echo $spy1 = number_format($spy *100, 2); ?>%</h3>
<br>
<h3> Starting Equity= $<?php echo $startEqSum; ?></h3>
<h3> Current Equity= $<?php echo $profitOrLossSum; ?></h3>
<h3> Total Profit= $<?php echo $profitOrLossSum - $startEqSum; ?></h3>
<h3> % Gain/Loss= <?php echo $gain = number_format((($profitOrLossSum - $startEqSum) / $startEqSum) * 100, 2); ?>%</h3>
<h3> Total Dividend= $<?php echo $dividendRateSum / 4; ?>/Quarter</h3>
<h3> Portfolio vs SPY= <?php echo $gain-$spy1; ?>%</h3><br>
</body>









share|improve this question











$endgroup$




bumped to the homepage by Community 21 mins ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.



















    0












    $begingroup$


    Some people have mentioned to me that my site is quite inefficient and given that it's taking ~17secs to load now, I'd like to change that but I've no idea how. I've tried Gzip to compress it but it didn't help. I got rid of some double quotes (I.e. "") and have used single quotes (I.e. '') instead, as well as got rid of some HTML blank spaces but that's about it.



    Here is most of my code, excluding some JS to save space. Either way, when I open the Google Chrome developer console on my site, it shows that it's the PHP file itself that takes so long to load, not JS so that's why I'm just showing that below. It's just this one page that's loading slowly, all others sites are very quick. I'd love some tips on how to make this more efficient.



    <?php
    require('includes/connection.php');
    require('includes/config.php');
    // Page name
    $title = 'Portfolio';
    // Include the header template
    require('layout/header.php');

    // If for some reason, not logged in then redirect to login page
    if(!$user->is_logged_in()) header('Location: login.php'); exit();
    ?>
    <div>
    <h2><?php echo htmlspecialchars($_SESSION['username'], ENT_QUOTES); ?></h2>
    <button id="opener" class='btn btn-success' >Advanced Company Data</button>
    <div id="dialog" title="Advanced Company Data"><a href="http://www.nasdaq.com/symbol/aapl">Exchange Information</a>
    </div>
    </div>
    <script>
    $("#dialog").dialog(
    autoOpen: false
    );
    $("#opener").click(function()
    $("#dialog").dialog("open", "modal", true );
    );
    </script>
    </div>
    <?php
    $spy = file_get_contents('https://api.iextrading.com/1.0/stock/spy/stats/year1ChangePercent');
    $spy = json_decode($spy,TRUE);
    // Initialising variables to store extracted information
    $name = [];
    $symbol = [];
    $open = [];
    $close = [];
    $high = [];
    $low = [];
    $lastprice = [];
    $y = 0;
    $z = '';
    $key = '93dcc722279c3a7577f248b09ef6167f';

    // Retreiving information from database
    $memberid = $_SESSION['memberID'];
    $sql = "SELECT * FROM portfolio WHERE memberID = $memberid";
    $result = mysqli_query($conn, $sql);

    // Check if databse is empty
    if (mysqli_num_rows($result) > 0)

    while($row = mysqli_fetch_assoc($result))

    $sym[$y] = $row['stocks_symbol'];
    $pri[$y] = $row['price'];
    $vol[$y] = $row['quantity'];
    $id[$y] = $row['memberid'];
    $y += 1;


    // If database empty
    else

    echo 'Portfolio Empty';
    die();

    mysqli_close($conn);

    // Adding all stock names in one variable to enable API call
    for($a=0;$a<$y;$a++)

    $z = $z.$sym[$a].',';

    $z = rtrim($z,',');

    // API call
    $contents = file_get_contents("http://marketdata.websol.barchart.com/getQuote.json?key=$key&symbols=$z&mode=R");
    $contents = json_decode($contents, true);
    // Check successfull API call
    if($contents['status']['code'] == 200)

    foreach($contents['results'] as $result)

    array_push($name,$result['name']);
    array_push($symbol,$result['symbol']);
    array_push($open,$result['open']);
    array_push($close,$result['close']);
    array_push($high,$result['high']);
    array_push($low,$result['low']);
    array_push($lastprice,$result['lastPrice']);


    // If API call unsuccessful
    else

    echo 'Error retreiving data. Please try again later.';
    die();

    ?>
    <!-- Generating Output in tabular format -->
    <table id= test class='table table-responsive'>
    <tr class='head warning'>
    <th>Name</th>
    <th>Symbol</th>
    <th>Open</th>
    <th>Close</th>
    <th>High</th>
    <th>Low</th>
    <th>Last Price</th>
    <th>Price Bought</th>
    <th>Quantity</th>
    <th>Change Per Stock</th>
    <th>Profit/Loss</th>
    <th>Amount Invested</th>
    <th>Current Market Value</th>
    <th>Dividend</th>
    <th>Total Dividend</th>
    <th>Company Description</th>
    <th>Latest News</th>
    </tr>
    <?php
    $profitOrLossSum = 0;
    $dividendRateSum = 0;
    $startEqSum = 0;
    $sumOf = array();
    $pnl = array();

    for($x=0;$x<$y;$x++)
    ?>
    <tr>
    <td class="input"><?php echo $name[$x]; ?></td>
    <td class="input"><?php echo $symbol[$x]; ?></td>
    <td class="input"><?php echo $open[$x]; ?></td>
    <td class="input"><?php echo $close[$x]; ?></td>
    <td class="input"><?php echo $high[$x]; ?></td>
    <td class="input"><?php echo $low[$x]; ?></td>
    <td class="input"><?php echo $lastprice[$x]; ?></td>
    <td class="input"><?php echo $pri[$x]; ?></td>
    <td class="input"><?php echo $vol[$x]; ?></td>
    <td class="input"><?php
    if($pri[$x] > $lastprice[$x])

    echo $lastprice[$x]-$pri[$x];

    else if($pri[$x] < $lastprice[$x])

    echo $lastprice[$x]-$pri[$x];

    else
    echo '0';
    ?></td>
    <td class="input"><b><?php
    $profitOrLoss = ($lastprice[$x]-$pri[$x]) * $vol[$x];
    $profitOrLossSum += $profitOrLoss;
    $pnl[] = $profitOrLoss;
    echo $profitOrLoss;
    ?></b></td>
    <td><?php
    $starteq = $pri[$x] * $vol[$x];
    $startEqSum += $starteq;
    echo $starteq;
    ?></td>
    <td><b><?php
    $firstno1 = floatval($vol[$x]);
    $secondno1 = floatval($lastprice[$x]);
    $sumOf[] = $firstno1 * $secondno1;
    $sum1 = $firstno1 * $secondno1;
    echo ($sum1);
    ?>
    </b></td>
    <td><?php
    $div = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=stats&filter=dividendRate");
    $div = json_decode($div,TRUE);
    $sum = 0;
    foreach($div as $divi => $value)
    echo $value['stats']['dividendRate'];
    $sum += (floatval($vol[$x]) + floatval($value['stats']['dividendRate']));

    ?></td>
    <td><?php
    $firstno = floatval($vol[$x]);
    $secondno = floatval($value['stats']['dividendRate']);
    $sum2 = 0;
    $sum2 += $firstno * $secondno;
    echo ($sum2);
    $dividendRateSum += $sum2;
    ?></td>
    <td class="input"><?php
    $desc = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=company&filter=description");
    $desc = json_decode($desc,TRUE);
    foreach($desc as $desc => $des)
    echo $des['company']['description'];

    ?></td>
    <td><?php
    $desc1 = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=news&filter=headline,url&range=1m&last=1");
    $desc1 = json_decode($desc1,TRUE);
    foreach($desc1 as $key111 => $des1)
    echo implode(PHP_EOL, array_column($des1['news'],'headline'));
    ?><br><?php $link = implode(PHP_EOL, array_column($des1['news'],'url'));
    echo '<a href="'.$link.'">Link</a>';

    ?></td>
    </tr>
    <?php

    $arr = array('profitOrLossSum' => $profitOrLossSum, 'dividendRateSum' => $dividendRateSum);
    $arr1 = array('startEqSum' => $startEqSum);
    $array = array_combine($name, $sumOf);
    $array10 = array_combine($name, $pnl);
    ?>
    </table>

    <h3> SPY %YTD= <?php echo $spy1 = number_format($spy *100, 2); ?>%</h3>
    <br>
    <h3> Starting Equity= $<?php echo $startEqSum; ?></h3>
    <h3> Current Equity= $<?php echo $profitOrLossSum; ?></h3>
    <h3> Total Profit= $<?php echo $profitOrLossSum - $startEqSum; ?></h3>
    <h3> % Gain/Loss= <?php echo $gain = number_format((($profitOrLossSum - $startEqSum) / $startEqSum) * 100, 2); ?>%</h3>
    <h3> Total Dividend= $<?php echo $dividendRateSum / 4; ?>/Quarter</h3>
    <h3> Portfolio vs SPY= <?php echo $gain-$spy1; ?>%</h3><br>
    </body>









    share|improve this question











    $endgroup$




    bumped to the homepage by Community 21 mins ago


    This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.

















      0












      0








      0





      $begingroup$


      Some people have mentioned to me that my site is quite inefficient and given that it's taking ~17secs to load now, I'd like to change that but I've no idea how. I've tried Gzip to compress it but it didn't help. I got rid of some double quotes (I.e. "") and have used single quotes (I.e. '') instead, as well as got rid of some HTML blank spaces but that's about it.



      Here is most of my code, excluding some JS to save space. Either way, when I open the Google Chrome developer console on my site, it shows that it's the PHP file itself that takes so long to load, not JS so that's why I'm just showing that below. It's just this one page that's loading slowly, all others sites are very quick. I'd love some tips on how to make this more efficient.



      <?php
      require('includes/connection.php');
      require('includes/config.php');
      // Page name
      $title = 'Portfolio';
      // Include the header template
      require('layout/header.php');

      // If for some reason, not logged in then redirect to login page
      if(!$user->is_logged_in()) header('Location: login.php'); exit();
      ?>
      <div>
      <h2><?php echo htmlspecialchars($_SESSION['username'], ENT_QUOTES); ?></h2>
      <button id="opener" class='btn btn-success' >Advanced Company Data</button>
      <div id="dialog" title="Advanced Company Data"><a href="http://www.nasdaq.com/symbol/aapl">Exchange Information</a>
      </div>
      </div>
      <script>
      $("#dialog").dialog(
      autoOpen: false
      );
      $("#opener").click(function()
      $("#dialog").dialog("open", "modal", true );
      );
      </script>
      </div>
      <?php
      $spy = file_get_contents('https://api.iextrading.com/1.0/stock/spy/stats/year1ChangePercent');
      $spy = json_decode($spy,TRUE);
      // Initialising variables to store extracted information
      $name = [];
      $symbol = [];
      $open = [];
      $close = [];
      $high = [];
      $low = [];
      $lastprice = [];
      $y = 0;
      $z = '';
      $key = '93dcc722279c3a7577f248b09ef6167f';

      // Retreiving information from database
      $memberid = $_SESSION['memberID'];
      $sql = "SELECT * FROM portfolio WHERE memberID = $memberid";
      $result = mysqli_query($conn, $sql);

      // Check if databse is empty
      if (mysqli_num_rows($result) > 0)

      while($row = mysqli_fetch_assoc($result))

      $sym[$y] = $row['stocks_symbol'];
      $pri[$y] = $row['price'];
      $vol[$y] = $row['quantity'];
      $id[$y] = $row['memberid'];
      $y += 1;


      // If database empty
      else

      echo 'Portfolio Empty';
      die();

      mysqli_close($conn);

      // Adding all stock names in one variable to enable API call
      for($a=0;$a<$y;$a++)

      $z = $z.$sym[$a].',';

      $z = rtrim($z,',');

      // API call
      $contents = file_get_contents("http://marketdata.websol.barchart.com/getQuote.json?key=$key&symbols=$z&mode=R");
      $contents = json_decode($contents, true);
      // Check successfull API call
      if($contents['status']['code'] == 200)

      foreach($contents['results'] as $result)

      array_push($name,$result['name']);
      array_push($symbol,$result['symbol']);
      array_push($open,$result['open']);
      array_push($close,$result['close']);
      array_push($high,$result['high']);
      array_push($low,$result['low']);
      array_push($lastprice,$result['lastPrice']);


      // If API call unsuccessful
      else

      echo 'Error retreiving data. Please try again later.';
      die();

      ?>
      <!-- Generating Output in tabular format -->
      <table id= test class='table table-responsive'>
      <tr class='head warning'>
      <th>Name</th>
      <th>Symbol</th>
      <th>Open</th>
      <th>Close</th>
      <th>High</th>
      <th>Low</th>
      <th>Last Price</th>
      <th>Price Bought</th>
      <th>Quantity</th>
      <th>Change Per Stock</th>
      <th>Profit/Loss</th>
      <th>Amount Invested</th>
      <th>Current Market Value</th>
      <th>Dividend</th>
      <th>Total Dividend</th>
      <th>Company Description</th>
      <th>Latest News</th>
      </tr>
      <?php
      $profitOrLossSum = 0;
      $dividendRateSum = 0;
      $startEqSum = 0;
      $sumOf = array();
      $pnl = array();

      for($x=0;$x<$y;$x++)
      ?>
      <tr>
      <td class="input"><?php echo $name[$x]; ?></td>
      <td class="input"><?php echo $symbol[$x]; ?></td>
      <td class="input"><?php echo $open[$x]; ?></td>
      <td class="input"><?php echo $close[$x]; ?></td>
      <td class="input"><?php echo $high[$x]; ?></td>
      <td class="input"><?php echo $low[$x]; ?></td>
      <td class="input"><?php echo $lastprice[$x]; ?></td>
      <td class="input"><?php echo $pri[$x]; ?></td>
      <td class="input"><?php echo $vol[$x]; ?></td>
      <td class="input"><?php
      if($pri[$x] > $lastprice[$x])

      echo $lastprice[$x]-$pri[$x];

      else if($pri[$x] < $lastprice[$x])

      echo $lastprice[$x]-$pri[$x];

      else
      echo '0';
      ?></td>
      <td class="input"><b><?php
      $profitOrLoss = ($lastprice[$x]-$pri[$x]) * $vol[$x];
      $profitOrLossSum += $profitOrLoss;
      $pnl[] = $profitOrLoss;
      echo $profitOrLoss;
      ?></b></td>
      <td><?php
      $starteq = $pri[$x] * $vol[$x];
      $startEqSum += $starteq;
      echo $starteq;
      ?></td>
      <td><b><?php
      $firstno1 = floatval($vol[$x]);
      $secondno1 = floatval($lastprice[$x]);
      $sumOf[] = $firstno1 * $secondno1;
      $sum1 = $firstno1 * $secondno1;
      echo ($sum1);
      ?>
      </b></td>
      <td><?php
      $div = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=stats&filter=dividendRate");
      $div = json_decode($div,TRUE);
      $sum = 0;
      foreach($div as $divi => $value)
      echo $value['stats']['dividendRate'];
      $sum += (floatval($vol[$x]) + floatval($value['stats']['dividendRate']));

      ?></td>
      <td><?php
      $firstno = floatval($vol[$x]);
      $secondno = floatval($value['stats']['dividendRate']);
      $sum2 = 0;
      $sum2 += $firstno * $secondno;
      echo ($sum2);
      $dividendRateSum += $sum2;
      ?></td>
      <td class="input"><?php
      $desc = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=company&filter=description");
      $desc = json_decode($desc,TRUE);
      foreach($desc as $desc => $des)
      echo $des['company']['description'];

      ?></td>
      <td><?php
      $desc1 = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=news&filter=headline,url&range=1m&last=1");
      $desc1 = json_decode($desc1,TRUE);
      foreach($desc1 as $key111 => $des1)
      echo implode(PHP_EOL, array_column($des1['news'],'headline'));
      ?><br><?php $link = implode(PHP_EOL, array_column($des1['news'],'url'));
      echo '<a href="'.$link.'">Link</a>';

      ?></td>
      </tr>
      <?php

      $arr = array('profitOrLossSum' => $profitOrLossSum, 'dividendRateSum' => $dividendRateSum);
      $arr1 = array('startEqSum' => $startEqSum);
      $array = array_combine($name, $sumOf);
      $array10 = array_combine($name, $pnl);
      ?>
      </table>

      <h3> SPY %YTD= <?php echo $spy1 = number_format($spy *100, 2); ?>%</h3>
      <br>
      <h3> Starting Equity= $<?php echo $startEqSum; ?></h3>
      <h3> Current Equity= $<?php echo $profitOrLossSum; ?></h3>
      <h3> Total Profit= $<?php echo $profitOrLossSum - $startEqSum; ?></h3>
      <h3> % Gain/Loss= <?php echo $gain = number_format((($profitOrLossSum - $startEqSum) / $startEqSum) * 100, 2); ?>%</h3>
      <h3> Total Dividend= $<?php echo $dividendRateSum / 4; ?>/Quarter</h3>
      <h3> Portfolio vs SPY= <?php echo $gain-$spy1; ?>%</h3><br>
      </body>









      share|improve this question











      $endgroup$




      Some people have mentioned to me that my site is quite inefficient and given that it's taking ~17secs to load now, I'd like to change that but I've no idea how. I've tried Gzip to compress it but it didn't help. I got rid of some double quotes (I.e. "") and have used single quotes (I.e. '') instead, as well as got rid of some HTML blank spaces but that's about it.



      Here is most of my code, excluding some JS to save space. Either way, when I open the Google Chrome developer console on my site, it shows that it's the PHP file itself that takes so long to load, not JS so that's why I'm just showing that below. It's just this one page that's loading slowly, all others sites are very quick. I'd love some tips on how to make this more efficient.



      <?php
      require('includes/connection.php');
      require('includes/config.php');
      // Page name
      $title = 'Portfolio';
      // Include the header template
      require('layout/header.php');

      // If for some reason, not logged in then redirect to login page
      if(!$user->is_logged_in()) header('Location: login.php'); exit();
      ?>
      <div>
      <h2><?php echo htmlspecialchars($_SESSION['username'], ENT_QUOTES); ?></h2>
      <button id="opener" class='btn btn-success' >Advanced Company Data</button>
      <div id="dialog" title="Advanced Company Data"><a href="http://www.nasdaq.com/symbol/aapl">Exchange Information</a>
      </div>
      </div>
      <script>
      $("#dialog").dialog(
      autoOpen: false
      );
      $("#opener").click(function()
      $("#dialog").dialog("open", "modal", true );
      );
      </script>
      </div>
      <?php
      $spy = file_get_contents('https://api.iextrading.com/1.0/stock/spy/stats/year1ChangePercent');
      $spy = json_decode($spy,TRUE);
      // Initialising variables to store extracted information
      $name = [];
      $symbol = [];
      $open = [];
      $close = [];
      $high = [];
      $low = [];
      $lastprice = [];
      $y = 0;
      $z = '';
      $key = '93dcc722279c3a7577f248b09ef6167f';

      // Retreiving information from database
      $memberid = $_SESSION['memberID'];
      $sql = "SELECT * FROM portfolio WHERE memberID = $memberid";
      $result = mysqli_query($conn, $sql);

      // Check if databse is empty
      if (mysqli_num_rows($result) > 0)

      while($row = mysqli_fetch_assoc($result))

      $sym[$y] = $row['stocks_symbol'];
      $pri[$y] = $row['price'];
      $vol[$y] = $row['quantity'];
      $id[$y] = $row['memberid'];
      $y += 1;


      // If database empty
      else

      echo 'Portfolio Empty';
      die();

      mysqli_close($conn);

      // Adding all stock names in one variable to enable API call
      for($a=0;$a<$y;$a++)

      $z = $z.$sym[$a].',';

      $z = rtrim($z,',');

      // API call
      $contents = file_get_contents("http://marketdata.websol.barchart.com/getQuote.json?key=$key&symbols=$z&mode=R");
      $contents = json_decode($contents, true);
      // Check successfull API call
      if($contents['status']['code'] == 200)

      foreach($contents['results'] as $result)

      array_push($name,$result['name']);
      array_push($symbol,$result['symbol']);
      array_push($open,$result['open']);
      array_push($close,$result['close']);
      array_push($high,$result['high']);
      array_push($low,$result['low']);
      array_push($lastprice,$result['lastPrice']);


      // If API call unsuccessful
      else

      echo 'Error retreiving data. Please try again later.';
      die();

      ?>
      <!-- Generating Output in tabular format -->
      <table id= test class='table table-responsive'>
      <tr class='head warning'>
      <th>Name</th>
      <th>Symbol</th>
      <th>Open</th>
      <th>Close</th>
      <th>High</th>
      <th>Low</th>
      <th>Last Price</th>
      <th>Price Bought</th>
      <th>Quantity</th>
      <th>Change Per Stock</th>
      <th>Profit/Loss</th>
      <th>Amount Invested</th>
      <th>Current Market Value</th>
      <th>Dividend</th>
      <th>Total Dividend</th>
      <th>Company Description</th>
      <th>Latest News</th>
      </tr>
      <?php
      $profitOrLossSum = 0;
      $dividendRateSum = 0;
      $startEqSum = 0;
      $sumOf = array();
      $pnl = array();

      for($x=0;$x<$y;$x++)
      ?>
      <tr>
      <td class="input"><?php echo $name[$x]; ?></td>
      <td class="input"><?php echo $symbol[$x]; ?></td>
      <td class="input"><?php echo $open[$x]; ?></td>
      <td class="input"><?php echo $close[$x]; ?></td>
      <td class="input"><?php echo $high[$x]; ?></td>
      <td class="input"><?php echo $low[$x]; ?></td>
      <td class="input"><?php echo $lastprice[$x]; ?></td>
      <td class="input"><?php echo $pri[$x]; ?></td>
      <td class="input"><?php echo $vol[$x]; ?></td>
      <td class="input"><?php
      if($pri[$x] > $lastprice[$x])

      echo $lastprice[$x]-$pri[$x];

      else if($pri[$x] < $lastprice[$x])

      echo $lastprice[$x]-$pri[$x];

      else
      echo '0';
      ?></td>
      <td class="input"><b><?php
      $profitOrLoss = ($lastprice[$x]-$pri[$x]) * $vol[$x];
      $profitOrLossSum += $profitOrLoss;
      $pnl[] = $profitOrLoss;
      echo $profitOrLoss;
      ?></b></td>
      <td><?php
      $starteq = $pri[$x] * $vol[$x];
      $startEqSum += $starteq;
      echo $starteq;
      ?></td>
      <td><b><?php
      $firstno1 = floatval($vol[$x]);
      $secondno1 = floatval($lastprice[$x]);
      $sumOf[] = $firstno1 * $secondno1;
      $sum1 = $firstno1 * $secondno1;
      echo ($sum1);
      ?>
      </b></td>
      <td><?php
      $div = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=stats&filter=dividendRate");
      $div = json_decode($div,TRUE);
      $sum = 0;
      foreach($div as $divi => $value)
      echo $value['stats']['dividendRate'];
      $sum += (floatval($vol[$x]) + floatval($value['stats']['dividendRate']));

      ?></td>
      <td><?php
      $firstno = floatval($vol[$x]);
      $secondno = floatval($value['stats']['dividendRate']);
      $sum2 = 0;
      $sum2 += $firstno * $secondno;
      echo ($sum2);
      $dividendRateSum += $sum2;
      ?></td>
      <td class="input"><?php
      $desc = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=company&filter=description");
      $desc = json_decode($desc,TRUE);
      foreach($desc as $desc => $des)
      echo $des['company']['description'];

      ?></td>
      <td><?php
      $desc1 = file_get_contents("https://api.iextrading.com/1.0/stock/market/batch?symbols=$symbol[$x]&types=news&filter=headline,url&range=1m&last=1");
      $desc1 = json_decode($desc1,TRUE);
      foreach($desc1 as $key111 => $des1)
      echo implode(PHP_EOL, array_column($des1['news'],'headline'));
      ?><br><?php $link = implode(PHP_EOL, array_column($des1['news'],'url'));
      echo '<a href="'.$link.'">Link</a>';

      ?></td>
      </tr>
      <?php

      $arr = array('profitOrLossSum' => $profitOrLossSum, 'dividendRateSum' => $dividendRateSum);
      $arr1 = array('startEqSum' => $startEqSum);
      $array = array_combine($name, $sumOf);
      $array10 = array_combine($name, $pnl);
      ?>
      </table>

      <h3> SPY %YTD= <?php echo $spy1 = number_format($spy *100, 2); ?>%</h3>
      <br>
      <h3> Starting Equity= $<?php echo $startEqSum; ?></h3>
      <h3> Current Equity= $<?php echo $profitOrLossSum; ?></h3>
      <h3> Total Profit= $<?php echo $profitOrLossSum - $startEqSum; ?></h3>
      <h3> % Gain/Loss= <?php echo $gain = number_format((($profitOrLossSum - $startEqSum) / $startEqSum) * 100, 2); ?>%</h3>
      <h3> Total Dividend= $<?php echo $dividendRateSum / 4; ?>/Quarter</h3>
      <h3> Portfolio vs SPY= <?php echo $gain-$spy1; ?>%</h3><br>
      </body>






      performance php sql api mysqli






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Feb 19 '18 at 4:06









      Sᴀᴍ Onᴇᴌᴀ

      9,88162165




      9,88162165










      asked Feb 18 '18 at 16:01









      FrenzyyFrenzyy

      6




      6





      bumped to the homepage by Community 21 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.







      bumped to the homepage by Community 21 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.






















          1 Answer
          1






          active

          oldest

          votes


















          0












          $begingroup$

          You should copy your page and write the time taken for all file-get-content and for the query. So you ll know where come that it s very slow.
          How many people are using it? How many people are using your server? If too many it s saturated and very very slow : change your server or the internet connection or optimise your code.
          Next use echo to write text it s faster than stoping the script and coming back.
          Better to redo a sql query instead of downloading a file. You could also cache the most used queries eventually in a new database table.
          If using the script tag you should always inform what is the language.
          If you use only once a session variable, it s faster not to save it first in a variable.
          If you just need to display a value only don t save it in an array first but at the moment of running the query.
          Prefer to use variable instead of array it s faster.






          share|improve this answer









          $endgroup$












            Your Answer





            StackExchange.ifUsing("editor", function ()
            return StackExchange.using("mathjaxEditing", function ()
            StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
            StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
            );
            );
            , "mathjax-editing");

            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "196"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f187809%2fdisplaying-the-value-of-a-stock-portfolio%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0












            $begingroup$

            You should copy your page and write the time taken for all file-get-content and for the query. So you ll know where come that it s very slow.
            How many people are using it? How many people are using your server? If too many it s saturated and very very slow : change your server or the internet connection or optimise your code.
            Next use echo to write text it s faster than stoping the script and coming back.
            Better to redo a sql query instead of downloading a file. You could also cache the most used queries eventually in a new database table.
            If using the script tag you should always inform what is the language.
            If you use only once a session variable, it s faster not to save it first in a variable.
            If you just need to display a value only don t save it in an array first but at the moment of running the query.
            Prefer to use variable instead of array it s faster.






            share|improve this answer









            $endgroup$

















              0












              $begingroup$

              You should copy your page and write the time taken for all file-get-content and for the query. So you ll know where come that it s very slow.
              How many people are using it? How many people are using your server? If too many it s saturated and very very slow : change your server or the internet connection or optimise your code.
              Next use echo to write text it s faster than stoping the script and coming back.
              Better to redo a sql query instead of downloading a file. You could also cache the most used queries eventually in a new database table.
              If using the script tag you should always inform what is the language.
              If you use only once a session variable, it s faster not to save it first in a variable.
              If you just need to display a value only don t save it in an array first but at the moment of running the query.
              Prefer to use variable instead of array it s faster.






              share|improve this answer









              $endgroup$















                0












                0








                0





                $begingroup$

                You should copy your page and write the time taken for all file-get-content and for the query. So you ll know where come that it s very slow.
                How many people are using it? How many people are using your server? If too many it s saturated and very very slow : change your server or the internet connection or optimise your code.
                Next use echo to write text it s faster than stoping the script and coming back.
                Better to redo a sql query instead of downloading a file. You could also cache the most used queries eventually in a new database table.
                If using the script tag you should always inform what is the language.
                If you use only once a session variable, it s faster not to save it first in a variable.
                If you just need to display a value only don t save it in an array first but at the moment of running the query.
                Prefer to use variable instead of array it s faster.






                share|improve this answer









                $endgroup$



                You should copy your page and write the time taken for all file-get-content and for the query. So you ll know where come that it s very slow.
                How many people are using it? How many people are using your server? If too many it s saturated and very very slow : change your server or the internet connection or optimise your code.
                Next use echo to write text it s faster than stoping the script and coming back.
                Better to redo a sql query instead of downloading a file. You could also cache the most used queries eventually in a new database table.
                If using the script tag you should always inform what is the language.
                If you use only once a session variable, it s faster not to save it first in a variable.
                If you just need to display a value only don t save it in an array first but at the moment of running the query.
                Prefer to use variable instead of array it s faster.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Feb 18 '18 at 21:10









                user9181232user9181232

                111




                111



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Code Review Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    Use MathJax to format equations. MathJax reference.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f187809%2fdisplaying-the-value-of-a-stock-portfolio%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    कुँवर स्रोत दिक्चालन सूची"कुँवर""राणा कुँवरके वंशावली"

                    Why is a white electrical wire connected to 2 black wires?How to wire a light fixture with 3 white wires in box?How should I wire a ceiling fan when there's only three wires in the box?Two white, two black, two ground, and red wire in ceiling box connected to switchWhy is there a white wire connected to multiple black wires in my light box?How to wire a light with two white wires and one black wireReplace light switch connected to a power outlet with dimmer - two black wires to one black and redHow to wire a light with multiple black/white/green wires from the ceiling?Ceiling box has 2 black and white wires but fan/ light only has 1 of eachWhy neutral wire connected to load wire?Switch with 2 black, 2 white, 2 ground and 1 red wire connected to ceiling light and a receptacle?

                    चैत्य भूमि चित्र दीर्घा सन्दर्भ बाहरी कडियाँ दिक्चालन सूची"Chaitya Bhoomi""Chaitya Bhoomi: Statue of Equality in India""Dadar Chaitya Bhoomi: Statue of Equality in India""Ambedkar memorial: Centre okays transfer of Indu Mill land"चैत्यभमि