Cruces
Cruces

Reputation: 3129

php:how to continue execution after exiting from a php script

I am writing a web page, which searches in a table and displays the data if all is well and a message if not. The code looks roughly like this:

<?php session_start(); ?>
<html><head> ..... </head>
    <body>
         <form action="search.php" method="post"> {parameters for searching} </form
         <?php include_once('display_results.php');?>
         <?php if (isset($_SESSION['message'])) {
                   echo "<script type=\"text/javascript\">alert(\"".$_SESSION['message']."\")</script>";
                   unset($_SESSION['message']);
               } ?>
     </body>
</html>

the display_results.php looks like this:

<?php
     //query table get results build output and if there was an error call do_exit($message)

 function do_exit($message) {
    //unset objects close connections and misc finalizations
    $_SESSION['message'] = $message;
    die();
 }

My problem is that when die() is called, it seems that not only does the display_results.php script stops, but also the original php file, so even though the message is set, there is no alert. On the other hand, if I remove the die() statement, and after each do_exit() I execute return this works correctly.

Now this isn't a huge problem, I can just make it so that I call return after each do_exit() but I was wandering if there was a way to exit the script but continue with the execution of the original php file

Thanks in advance for any help you can provide.

Upvotes: 0

Views: 3645

Answers (3)

Barry Keepence
Barry Keepence

Reputation: 136

You don't actually have to call die() at all. Just let the script come to a natural ending. I assume you return results using echo or print statements. If you need performance you can close the session so that other calls can run on it.

Upvotes: 0

Florian
Florian

Reputation: 2874

Why would you want to do that? Just exit a function correctly (with return). It would be possible to do: return do_exit(); and replace die() in your do_exist() function with return; or return false; (if you want to return a value).

die() (or exit()) always ends the script execution, not only the execution of one script-file or a function, that wouldn't be useful.

Upvotes: 2

Hassan Murtaza
Hassan Murtaza

Reputation: 77

why don't you use return false; at the end of your function do_exit()?

Upvotes: 1

Related Questions